2 элемента управления, 1 событие - PullRequest
0 голосов
/ 21 мая 2010

Формы http://img101.imageshack.us/img101/6970/stackoverflowquestion.png

У меня есть 2 поля ввода, которые принимают хост или IP. Когда пользователь покидает поле ввода, запускается событие, которое проверяет ввод, чтобы увидеть, действительно ли это живой компьютер. Затем результаты помещаются в соответствующую этикетку.

У меня вопрос: нужно ли использовать отдельные события для каждого поля ввода, поскольку они обновляют разные метки? Или я могу использовать 1 событие и проверить, кто был вызывающим абонентом, а затем обновить соответствующую метку?

Ответы [ 7 ]

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

Поскольку они обновляют отдельные метки, я бы выбрал два обработчика событий. Он чище и не требует никакой логики.

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

1 голос
/ 21 мая 2010

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

1 голос
/ 21 мая 2010

короткий ответ да.

Если у вас есть только два, вы можете написать оператор switch. Но тогда вы будете тесно связаны с реальными ярлыками.

Другой вариант для размещения метки в свойстве Tag, затем, когда вы получите отправителя, получите тег отправителя, приведите в качестве метки и установите текст.

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

Я бы зарегистрировал два отдельных события по одному для каждой метки.

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

Может иметь один основной обработчик событий (не настоящий обработчик событий, но похожий), который принимает ссылку на метку, и отдельные обработчики событий, которые вызывают основной, что-то вроде:

private void AnyTextBox_Leave(object sender, EventArgs e, Label labelToUpdate)
{
  // Do stuff
}

private void TextBox1_Leave(object sender, EventArgs e)
{
  AnyTextBox_Leave(sender, e, lbl1);
}
private void TextBox2_Leave(object sender, EventArgs e)
{
  AnyTextBox_Leave(sender, e, lbl2);
}
0 голосов
/ 21 мая 2010

Используйте два события, и обработчики вызовут общий метод, который принимает метку в качестве параметра.

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

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

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