В моих формах есть некоторые флажки, а некоторые из них в панелях в определенной форме (два разных вопроса).
Я поместил кнопку, когда пользователь нажимает на нее, размер всех флажков должен меняться (во всех панелях и формах).
И еще один вопрос: как я могу определить, какой тип элементов управления в приложении программно?
Спасибо за вашу помощь.
Я поместил кнопку и добавил обработчик событий.
и для того, чтобы основать тип управления, я использовал имя управления. Вот моя попытка:
foreach (Control ctrl in this.Controls)
if (ctrl.Name.Contains("combo"))
checkbox1.SetSize = new Size(40,40);
Если вы планируете использовать одну функцию для обработки нескольких событий OnClick, вы можете получить источник из отправителя (отправитель является заданным параметром для реализации обработчика)
(Если это был вопрос, вы должны уточнить, что именно вы хотите сделать, и показать свой соответствующий код)
Самый простой способ - использовать этот метод расширения для циклического переключения всех флажков
foreach(var checkBox in this.GetAll<CheckBox>())
checkBox.Size = new Size(40,40);
Без этого вам придется поочередно перебирать панели
foreach(var panel in this.Controls.OfType<Panel>())
foreach(var checkbox in panel.Controls.OfType<CheckBox>())
//set size in panel
foreach(var checkbox in this.Controls.OfType<CheckBox>())
//set size in form
Изменить в соответствии с комментарием:
Вы можете просмотреть все элементы управления, чтобы найти все флажки:
private void ProcessControls(Control containerControl)
{
foreach (Control control in containerControl.Controls)
{
if (control is CheckBox)
{
ChangeCheckBoxProperties((CheckBox)control);
}
else
{
ProcessControls(control);
}
}
}
private void ChangeCheckBoxProperties(CheckBox cb)
{
// ...
}
Вы можете вызвать этот метод для своей основной формы.
Разумеется, вы должны думать о своем aproach вообще, потому что, если вы используете такие циклы, кажется, что в вашем решении что-то не так.