Событие onTextChanged для многих текстовых полей c # - PullRequest
2 голосов
/ 29 мая 2010

В настоящее время я создаю прототип для нового системного экрана и использую c # для его создания.

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

так как эти текстовые поля являются редактируемыми (в случае, если клиент желает увеличить значение) (не могу вдаваться в подробности, но они это сделают), мне нужно иметь событие f Формула ontextchange для того, когда значения изменяются, поэтому общее поле обновляется.

однако у меня есть ощущение, что должен быть способ не создавать 14 различных событий, есть ли способ, которым я могу иметь 1 событие, которое срабатывает, если какое-либо из 14 текстовых полей сработает?

спасибо

Alan

Ответы [ 2 ]

3 голосов
/ 29 мая 2010

Да, вы можете создать одно событие - и затем подписать все текстовые поля на один и тот же обработчик события в вашем классе, который вызывает это одно событие.

Если клиенты будутвам нужно знать , какое текстовое поле изменилось, вам нужно подумать о том, как наилучшим образом сообщить об этом им - возможно, вы захотите создать свой собственный подкласс EventArgs.В противном случае, просто EventHandler или EventHandler<EventArgs> должны работать нормально.

0 голосов
/ 29 мая 2010

Да, допустим, ваши текстовые поля называются textBox1, textBox2, ... если вы автоматически создали метод "textBox1_TextChanged" для события "TextChanged" textBox1, вы можете легко использовать этот метод для всех других текстовых полей .. .

Например, в Designer просто выберите компонент «textBox2», перейдите на вкладку «События» в окне «Свойства» и вместо создания нового события дважды щелкните в редактируемом поле рядом со значением «TextChanged», просто используйте раскрывающийся список меню для выбора метода «textBox1_TextChanged», созданного (автоматически) ранее.

Если вам нужно решить, какой textBox вызвал событие, вы можете использовать параметр метода «sender».

...