Как сделать так, чтобы любые элементы управления (разных типов) в форме вызывали один обработчик событий? - PullRequest
0 голосов
/ 27 октября 2011

У меня есть форма со множеством элементов управления text, numericUpdown и checkbox, а также функция, которую я хотел бы вызвать, если чье-либо значение изменяется.Как лучше всего это устроить?Я мог бы сделать Form1_Load цикл через все элементы управления, применив Case к типу элемента управления, чтобы установить конкретный тип события, но это кажется неуклюжим.Спасибо.

РЕДАКТИРОВАТЬ: Сказав, что, TextBox ValueChanged вовсе не эквивалентен numericUpDown Valueoted, так как он запускается для каждого символа.Ближайший, похоже, утвержден.

1 Ответ

1 голос
/ 28 октября 2011

В идеале следует использовать привязку данных к объекту предметной области / модели представления / классу "DTO", который реализует INotifyPropertyChanged и, следовательно, вызывает событие PropertyChanged , когда базовое значение было изменено.

Тогда вам нужно будет обработать уведомления о событиях изменения свойства, чтобы решить, когда нужно поднимать «конкретный тип события».Вы можете сделать это либо в своем пользовательском интерфейсе, либо в самом объекте своего домена, в зависимости от того, что делает это «конкретное событие».

Обратите внимание, что привязка данных записывает объект домена в OnValidation по умолчанию который обычно срабатывает при фокусировке, оставляя элемент управления, хотя в зависимости от поведения конкретного элемента управления, с которым вы связаны, вы можете изменить его на OnPropertyChanged, который, например, срабатывает при каждом вводе символов для TextBox.

Здесь есть хорошее введение в привязку данных WinForms , если вы еще не знакомы с ним ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...