2013-08-23 59 views
0

我在窗口中运行相同类型的流程的不同类型的文本框旁边有几个按钮。我决定通过添加句柄添加逗号分隔符来将所有_click事件整合到一个事件中。有没有办法告诉哪个按钮被某个属性点击了,这样我就可以只使用case语句或者某种程度来启用那些特定的文本框?由于它都是通过一个点击事件来处理的(因为我不想为了运行与其他按钮运行相同的功能而创建10个点击事件,保存代码和可读性)是否有某种方法可以找出哪个按钮被点击?当你点击一个按钮时传递数据?

回答

1

在你委托你有两个参数:对象发件人,并EventArgs的。 只投sender对象到按钮对象,然后你可以用一个按钮,它的所有属性应对:

private void button_Click(object sender, EventArgs e) 

     { 
      Button btn = sender as Button; 
      string name = btn.Name; 
     } 

编辑:对不起,没注意VB.NET标签,但我为了以防万一,我会留下我的回答;)

+0

这可以轻松地转换为VB代码。对我来说,这看起来是正确的! – Recipe

1

你可以尝试这样的事:

Public Sub YourEventHandlerName(sender As object, e As EventArgs) 
    Select CType(sender, Button).Name 
     Case "Button1_Name" 
      'Do what ever you wanted to do in here 
     Case "Button2_Name" 
      'Do what ever you wanted to do in here 
    End Select 
End Sub 
+0

说实话,如果这是用法的实际想法,我宁愿看到每个按钮的事件处理程序。这是更清洁,更容易维护。 通过这种方式,您可以将硬编码的名称作为字符串进行粘贴...... – Recipe

相关问题