#c# #winforms
#c# #winforms
Вопрос:
Например, я хотел бы получить массив флажков:
CheckBox[] faults = new CheckBox[20];
Теперь, как мне разместить их в моей форме и связать их с именем их массива?
Спасибо.
Комментарии:
1. Из приведенных ниже комментариев звучит так, как будто вы пытались сгенерировать элементы управления в коде, которыми затем можно было бы манипулировать в конструкторе. Похоже, вы ожидали, что ваши изменения во время выполнения сохранятся в конструкторе после завершения кода. Это можно сделать, создав плагин для Visual Studio, который управляет конструктором, но Visual Studio вообще не сохраняет никаких изменений, внесенных в результате выполнения вашего обычного кода.
2. @Godeke, да, это то, на что я надеялся, поскольку мне нравится визуализировать вещи в конструкторе. Но это нормально, я просто добавляю все флажки вручную.
Ответ №1:
Как насчет этого:
YourForm.Controls.AddRange(faults);
Комментарии:
1. Спасибо @rsenna! Могу ли я взаимодействовать с ними в конструкторе после добавления элементов управления? Если да, то каким образом?
2. @Ryan R: не следует смешивать программно добавленные элементы управления с элементами управления, добавляемыми автоматически дизайнером форм Visual Studio. Представьте это как два отдельных мира: если вы хотите установить их положение с помощью конструктора, добавьте их таким же образом.
Ответ №2:
Вы должны перебирать все флажки в faults
, но имейте в виду, что они не перекрываются, поэтому вы можете поступить следующим образом.
Пример:
int top = 0; //used for proper positioning of controls
foreach (CheckBox cb in faults)
{
cb.Location =new Point(0 , top); // fixing cb for distinct position
top =10;
this.Controls.Add(cb);
}
Комментарии:
1. Почему вы хотите, чтобы все они перекрывались?
2. Могу ли я вручную разместить их в конструкторе? Или они должны быть расположены программно?
Ответ №3:
foreach (CheckBox cb in faults) YourForm.Controls.Add(cb);
Ответ №4:
Предполагая, что вы используете MS Visual Studio: создайте небольшой тестовый проект, добавьте флажок в форму с именем MyForm
с помощью Visual Studio designer и ознакомьтесь с созданным методом InitializeComponent
в файле MyForm.designer.cs
. Это поможет вам узнать, какие свойства ваших флажков вам придется инициализировать. И, конечно, вы увидите, куда Visual Studio помещает вызов this.Controls.Add(cb)
.
Ответ №5:
Попробуйте это:
var faults = new CheckBox[20];
Point startPoint = new Point(20, 10);
for (int i = 0; i < faults.Length; i )
{
Controls.Add(new CheckBox()
{
Location = new Point(startPoint.X, 20 * i startPoint.Y),
Text = (i 1).ToString()
});
}
Удачи!