【问题标题】:Passing data when you click a button?单击按钮时传递数据?
【发布时间】:2013-08-23 13:38:06
【问题描述】:

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

【问题讨论】:

    标签: vb.net winforms button


    【解决方案1】:

    在您的委托中,您有两个参数:Object sender 和 EventArgs e。 只需将 sender 对象投射到按钮对象上,然后您就可以处理按钮及其所有属性:

    private void button_Click(object sender, EventArgs e)
    
            {
                Button btn = sender as Button;
                string name = btn.Name;
            }
    

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

    【讨论】:

    • 这可以很容易地转换成VB代码。对我来说,这看起来是正确的!
    【解决方案2】:

    你可以试试这样的:

    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
    

    【讨论】:

    • 说实话,如果这是实际使用的想法,我宁愿为每个按钮查看一个事件处理程序。这样更清洁,更容易维护。这样,您就会被硬编码的名称作为字符串卡住......
    猜你喜欢
    • 2021-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    • 2013-11-07
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    相关资源
    最近更新 更多