#c# #checkbox
#c# #флажок
Вопрос:
Я пытаюсь создать динамические флажки в цикле for. Но я получаю сообщение об ошибке не во время компиляции, а когда я запускаю кнопку create checkbox и запускаю эту функцию. Не могли бы вы сказать мне, что я делаю не так?
public void CreateCheckBox (int i)
{
int y = 10;
CheckBox[] _cb = new CheckBox[i];
String chkBox = "chkBox_";
for (int n = 0; n<i; n )
{
_cb[n].Location = new Point(10, y);
_cb[n].Name= chkBox n.ToString();
form1.Controls.Add(_cb[n]);
y = 15;
}
}
Ответ №1:
Внутри цикла вам нужно будет создать новый экземпляр checkbox .
for (int n = 0; n<i; n )
{
_cb[n] = new CheckBox();
_cb[n].Location = new Point(10, y);
_cb[n].Name= chkBox n.ToString();
form1.Controls.Add(_cb[n]);
y = 15;
}
Комментарии:
1. Что делать, если я хочу удалить один из этих флажков? как я могу создать form1.Controls. Удалить () вещь?
2. @ValNolav чтобы удалить, вы можете сделать
Control cb = form1.FindControl(controlName); form1.Controls.Remove(cb);
Ответ №2:
Когда вы определяете Array
of Checkboxes
, объекты внутри массива инициализируются null
. Вам необходимо создать экземпляр флажка с помощью new Checkbox()
.
На мой взгляд, вам не нужно сохранять их в a Checkbox[]
, поскольку форма управляет коллекцией элементов управления. Итак, этот фрагмент кода, возможно, более удобочитаем:
public void CreateCheckBox (int max)
{
String name = "chkBox_";
int y = 10;
for (int i = 0; n < max; i )
{
Checkbox current = new Checkbox();
current.Location = new Point(10, y);
current.Name= name i.ToString();
form1.Controls.Add(current);
y = 15;
}
}
Комментарии:
1. Мне нужно удалить текстовые поля в строке, щелкнув флажок в той же строке. Как я могу это сделать, нажав кнопку??
2. Я рекомендую вам сохранить индекс строки в флажке. Тег, затем вы прослушиваете событие CheckedChanged в текстовом поле (используя = ) и в обработчике событий берете индекс строки из тега отправителя.