gpt4 book ai didi

c# - 在 C# 中使用 += 运算符将方法绑定(bind)到事件

转载 作者:太空宇宙 更新时间:2023-11-03 17:10:42 26 4
gpt4 key购买 nike

我正在制作一个windows窗体,我试图手动绑定(bind)一个方法到myButton的点击事件,就像这样:

    public Form1()
{
InitializeComponent();
myButton.Click = new EventHandler(ShowMessage("You clicked my button!"));
}

private void ShowMessage(string message)
{
MessageBox.Show(message);
}

有些人可能会猜到,编译器不喜欢这样。我不确定为什么,因为我习惯于使用 Javascript 做这样的事情:

document.getElementById("myButton").onclick = function(){showMessage("You clicked my button")};
function showMessage(message) {
alert(message);
}

我蒙混过关,最终做了一些非常丑陋的事情,涉及像这样的全局变量:

    string message = "";
public Form1()
{
InitializeComponent();
message = "You clicked my button!";
myButton.Click += ShowMessage;
}

private void ShowMessage(object sender, EventArgs e)
{
MessageBox.Show(message);
}

这是我的两个问题:第一,有没有更简洁的方法来做到这一点?其次,为什么事件方法必须分配 += 而不仅仅是 =

最佳答案

必须使用 += 将事件处理程序添加到事件中,因为该事件可能有多个您的特定代码片段不知道的其他委托(delegate)。纯分配意味着能够删除其他关联的代表,作为事件的客户,您不应该有权这样做。

此外,您可能希望利用匿名委托(delegate)来完成任何形式的参数绑定(bind)。例如:

myButton.Click += delegate(object sender, EventArgs e) {
MessageBox.Show("You clicked my button!");
};

关于c# - 在 C# 中使用 += 运算符将方法绑定(bind)到事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5810562/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com