Vb.net 单击按钮时传递数据?

Vb.net 单击按钮时传递数据?,vb.net,winforms,button,Vb.net,Winforms,Button,我在窗口中不同类型的文本框旁边有几个按钮,它们运行相同类型的流。我决定通过添加带句柄的逗号分隔符,将所有_click事件聚集到一个事件中。有没有一种方法可以告诉我哪个按钮是通过某个属性点击的,这样我就可以使用case语句或某种程度的东西只启用那些特定的文本字段?由于它都是通过一次点击事件来处理的(因为我不想让10次以上的点击事件只是为了运行与其他按钮运行相同的功能,保存代码和可读性),有什么方法可以确定单击了哪个按钮吗?您可以尝试以下方法: Public Sub YourEventHandler

我在窗口中不同类型的文本框旁边有几个按钮,它们运行相同类型的流。我决定通过添加带句柄的逗号分隔符,将所有_click事件聚集到一个事件中。有没有一种方法可以告诉我哪个按钮是通过某个属性点击的,这样我就可以使用case语句或某种程度的东西只启用那些特定的文本字段?由于它都是通过一次点击事件来处理的(因为我不想让10次以上的点击事件只是为了运行与其他按钮运行相同的功能,保存代码和可读性),有什么方法可以确定单击了哪个按钮吗?

您可以尝试以下方法:

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

在委托中有两个参数:Object sender和EventArgs e。 只需将sender对象强制转换为button对象,然后就可以处理按钮及其所有属性:

private void button_Click(object sender, EventArgs e)

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

编辑:很抱歉,我没有注意到VB.NET标记,但我会留下我的答案以防万一;)

这可以很容易地转换成VB代码。对我来说,这看起来是正确的!老实说,如果这是实际使用的想法,我宁愿看到每个按钮都有一个事件处理程序。这是一种更干净、更易于维护的方式。这样的话,你就会被硬编码的名字当作字符串。。。