2控制,1个事件

时间:2010-05-21 16:31:31

标签: c# winforms events

Forms http://img101.imageshack.us/img101/6970/stackoverflowquestion.png

我有2个输入文本框,它们带有主机或IP。当用户离开输入框时,会触发一个事件来检查输入以查看它是否实际上是一台实时计算机。然后将结果放入适当的标签中。

我的问题是,我是否应该为每个输入框使用单独的事件,因为它们会更新不同的标签?或者,我可以使用1个事件并检查调用者是谁,然后更新相应的标签吗?

7 个答案:

答案 0 :(得分:3)

当他们更新单独的标签时,我会选择两个事件处理程序。它更清洁,不需要任何逻辑。

如果您想将该代码保存在一个地方,可以调用实际更新的实用程序方法。

答案 1 :(得分:1)

简短回答是。

如果您只有两个,那么您可以编写一个switch语句。但是你会紧紧地联系到实际的标签。

将标签放在Tag属性中的另一个选项,然后当您获得发件人获取发件人的标签时,将其转换为标签并设置文本。

答案 2 :(得分:1)

另一种选择是包含文本框和标签的自定义控件,并将事件处理程序构建到控件的textbox_leave事件中,假设您为所有控件提供了一致的逻辑。

答案 3 :(得分:0)

你可以这样做,但我会说你应该使用2个不同的事件处理程序,然后你不需要任何逻辑来决定基于调用者做什么。它使代码更清晰,更易于理解。

答案 4 :(得分:0)

使用两个事件并让处理程序调用一个将标签作为参数的公共方法。

答案 5 :(得分:0)

可能有一个主要事件处理程序(不是真正的事件处理程序,但类似)接受对标签的引用,以及调用主要事件的各个事件处理程序,如:

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);
}

答案 6 :(得分:0)

我会为每个标签注册两个单独的事件。