如果我正在编写代码来处理来自窗体上控件的事件,如下所示:
private void btnButton_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
btn.Text = "Button pressed"
}
我是否应该始终将发送方对象强制转换为正确的类型(正如我上面所做的那样),或者明确引用控件名称更好,例如:
private void btnButton_Click(object sender, EventArgs e)
{
btnButton.Text = "Button pressed"
}
这里的最佳做法是什么?我想我可能会担心这太多了......
答案 0 :(得分:4)
我更喜欢直接引用按钮(选项2),因为它更容易搜索引用按钮的位置并更改文本。
答案 1 :(得分:4)
我个人使用发件人,如果我将相同的方法绑定到多个控件,例如
private void checkBox_Click(object sender, EventArgs e)
{
CheckBox box = (CheckBox)sender;
myDataObject.SomeOption = box.Value;
}
如果可以保持可维护性,我认为最好直接引用控件。
请记住,动态创建的控件也需要使用sender方法。
答案 2 :(得分:2)
这实际上取决于应用程序。在某些情况下(通常是简单的小型表格),可以引用控件属性。在某些情况下(任何时候你以编程方式添加控件),绝对有必要使用转换方法。
答案 3 :(得分:2)
如果每个控件都有单独的事件处理程序 - 直接使用控件。
如果您有一个用于少数控件的事件处理程序 - 请使用转换为sender
。
换句话说,尽可能经常地使用控制,imho。
答案 4 :(得分:1)
对于处理单个控件的事件,我会使用#2。为了可维护性,我没有命名处理多个控件_的例程。相反,我创建一个单独的名称,指示它处理多个控件的事件,例如MultiShapeButtons_Click而不是btnShapeButton1_Click
答案 5 :(得分:0)
如果处理程序仅适用于特定控件,我会使用第一个选项。第二个选项适用于常规处理程序,例如处理页面上的所有CheckBox或某些控件(Rob提供它的方式)。