Привязка данных со свойствами управления в Winforms: привязка включена к состоянию Combobox?

У меня почти нет опыта работы с WinForms, но я уверен, что это простая задача. Мне просто нужно включить и отключить свойство Enabled текстового поля на основе SelectedIndex ComboBox.

Можно ли это сделать в дизайнере с помощью DataBindings, или мне нужно написать какой-то обработчик?


person bwerks    schedule 16.06.2010    source источник


Ответы (1)


Вы можете связать его, но вам нужно написать преобразователь Value -> Boolean, чтобы реализовать логику. Я бы предложил, поскольку winforms не поддерживает парадигму ViewModel, вы просто используете обработчик событий, поскольку вам, вероятно, все равно придется определять привязку данных в коде.

public void MyComboBox_SelectedIndexChanged(object sender, EventArgs args)
{
   ComboBox box = sender as ComboBox;
   if (box != null) return;

   switch(box.Text)
   {
      case "Value1":
      case "Value2":
      case "Value3":
         myTextBox.Enabled = false;
         break;
      default:
         myTextBox.Enabled = true;
   }
}
person Aren    schedule 17.06.2010
comment
Да, у меня уже есть много такого кода, но я пытаюсь переместить его в сторону дизайнера, чтобы код был менее загроможденным. Это правильное замечание, что в этом случае требуется преобразование. У меня также есть аналогичная ситуация, когда Enabled привязан к CheckBox.Checked, но я не могу ввести привязку данных через конструктор - только вручную закодировав его в файле конструктора, после чего он появляется (выделено серым цветом ) в конструкторе. - person bwerks; 17.06.2010
comment
Чтобы дополнительно уточнить, когда я нахожусь в окне «Форматирование и расширенное связывание», открытом из раздела (DataBindings) в окне свойств элемента управления, список Binding: всегда пуст, и я не знаю, как добавить в него что-то. - person bwerks; 17.06.2010