Я делал форму Windows и пытался вручную привязать метод к событию click 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);
}
Вот два моих вопроса: во-первых, есть ли более чистый способ сделать это?Во-вторых, почему методы событий должны назначаться с +=
, а не просто =
?