c # Элементы списка в форме, удаляющие и обновляющие их в строке

#c# #winforms #refresh

#c# #winforms — формы #обновить #winforms

Вопрос:

У меня есть

  List<MyController> _myController = new List<MyController>();
  

этот класс объектов MyController содержит 4 текстовых поля и 1 кнопку и 1 флажок.

Функция checkbox заключается в удалении всей строки и удалении ее из массива списка объекта MyController.

Когда я нажимаю флажок, он удаляет всю строку, но я хочу, чтобы все мои ячейки были перерисованы в моей форме.

Я пытался

 Form.ActiveForm.Controls.Clear();
 foreach(MyControls mcc in _myControls)
    {
 Form.ACtiveForm.Controls.Add(mcc.cb);    
 ....
       }

Form.ActiveForm.Update();
  

Однако это не меняет расположения. Каков наилучший метод для такого кода, чтобы перерисовывать элементы формы в правильно обновленных местах после удаления строки элементов?

Надеюсь, я четко объяснил свой вопрос.

Комментарии:

1. Попробуйте вызвать Form.ActiveForm.Refresh() вместо или раньше Update() .

2. @Val Какое событие вы используете для CheckBox ? используете ли вы CheckedChanged ?

3. Г-н DDD да, я использую CheckedChanged.

Ответ №1:

Попробуйте использовать FlowLayoutPanel, добавьте MyController в обычный элемент управления панели, а затем добавьте этот элемент управления панели в элемент управления FlowLayoutPanel. Если вы хотите удалить MyController, удалите также обычный элемент управления Panel, тогда FlowLayoutPanel должен правильно упорядочить остальные элементы управления.

Комментарии:

1. теперь читаем некоторые материалы о FlowLayoutPanel. Я спрошу, есть ли у меня какие-либо вопросы. Большое спасибо.