c# - 触发事件时单击了哪个对象?

标签 c# winforms

这是我想要它做的主要内容。

我在 Form Initializer 中创建了两个按钮,如下所示

    public Form1()
    {
        InitializeComponent();

        Button b1 = new Button();
        b1.Parent = this;
        b1.Name = "btnA";
        b1.Text = "Button A";
        b1.Click += new EventHandler(button_Click);
        b1.Show();

        Button b2 = new Button();
        b2.Parent = this;
        b2.Name = "btnB";
        b2.Text = "Button B";
        b2.Click += new EventHandler(button_Click);
        b2.Show();
    }

    private void button_Click(object sender, EventArgs e)
    {
        MessageBox.Show("Button A or Button B was Clicked?");
    }

我需要知道点击了哪个按钮,并且显然要操作被点击的那个按钮。

甚至可以更改被单击的按钮的文本。

我确信我们可以使用对象发送器来访问触发事件的按钮,但只是不知道如何使用发送器来操作正确的按钮。

任何指导或帮助将不胜感激

最佳答案

只需将 sender 转换为 Button:

private void button_Click(object sender, EventArgs e)
{
    Button clicked = (Button) sender;
    MessageBox.Show("Button " + clicked.Name + " was Clicked.");
}

关于c# - 触发事件时单击了哪个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/886965/

相关文章:

c# - 如果不能保证字符串或整数的 getHashCode() 是唯一的,为什么要使用它?

c# - 本地化 asp.net 下拉列表

c# - JSON 中的 ASP.NET Web API 日期格式未成功序列化

c# - 动态创建 lambda 表达式 + linq + OrderByDescending

c# - 如何检测所有者表单何时从内部控件关闭?

c# - 在设计时将 DataGridView.DefaultCellStyle.NullValue 设置为 null 会在运行时添加行时引发错误

c# - 使用 SqlBulkCopy 为每个插入的行触发触发器

c# - Browser.ReadyState 上的致命执行错误

c# - 在 SQL Server 表中搜索值列表的最有效方法

c# - 尽管有双缓冲,行情仍然闪烁