#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. Я спрошу, есть ли у меня какие-либо вопросы. Большое спасибо.