Установка элементов управления в значение enabled false, если они не видны

#c#

#c#

Вопрос:

Привет, чего я хотел бы достичь, так это когда я изменяю свойство visible элемента управления на false, я также хочу изменить свойство enabled на false. и наоборот.

сценарий (предполагая, что у нас есть текстовое поле и флажок: если флажок установлен, текстовое поле отображается и включено, иначе текстовое поле не отображается и не включено

Я могу сделать это с помощью событий, но это слишком много кода для повторения при наличии нескольких элементов управления..

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

1. Перебирайте элементы управления при запуске и добавляйте к каждому элементу управления тот же перехват VisibilityChanged, который устанавливает значение enabled равным false или true.

Ответ №1:

Вы могли бы обработать VisibleChanged событие элемента управления:

 void Controls_VisibleChanged(object sender, EventArgs e)
{
   Control c = (Control) sender;
   c.Enabled = c.Visible;
}
  

Вы можете использовать один и тот же обработчик событий для всех элементов управления. Например, в конструкторе:

 foreach (Control c in this.Controls)
    c.VisibleChanged  = new EventHandler(this.Controls_VisibleChanged);
  

Ответ №2:

Я не смог понять ваш вопрос, но я напишу что-нибудь, что может помочь.

Дважды щелкните по вашему флажку, отредактируйте CheckedChanged событие и напишите код:

 if (!<CheckBoxName>.Checked)
{
    <TextBoxName>.Enabled = false;
    <TextBoxName>.Hide();
}
else
{
    <TextBoxName>.Enabled = true;
    <TextBoxName>.Show();
}
  

Примечание:
<CheckBoxName> = Имя вашего флажка
<TextBoxName> = Имя вашего текстового поля

Измените флажок.Проверьте свойства и измените его на true , чтобы код работал плавно.

Я надеюсь, что это вам поможет…