создание динамических флажков на c #

#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 в текстовом поле (используя = ) и в обработчике событий берете индекс строки из тега отправителя.