Обработчики событий в C # - синтаксис / шаблон

Я новичок в C #, поэтому извиняюсь, если это вопрос новичка. Я пытаюсь внести ясность в синтаксис или шаблон для обработки событий в C #.

Итак, у меня есть объект Form Form1 и Button button1 в форме. Я обрабатываю событие Click с помощью метода, подобного этому в Form1.cs:

private void button1_Click(object sender, EventArgs e)
{
    Debug.WriteLine("click!");
}

, который отлично работает. Теперь в другой форме Form2 У меня есть TreeView treeView1 , и я хочу обработать событие BeforeExpand . Поэтому я предположил, что это будет:

private void treeView1_BeforeExpand(object sender, TreeViewCancelEventArgs e)
{
     Debug.WriteLine("Hello!");
}

, что на самом деле не работает: этот метод никогда не вызывается, когда я раскрываю узел. Но несколько ответов SO подразумевают, что это способ сделать это, например, этот .

Так или иначе, я нашел альтернативный подход, который мне действительно подходит. В конструкторе формы привяжите обработчик событий следующим образом:

treeView1.BeforeExpand += new TreeViewCancelEventHandler(anyMethodNameYouLike);

Итак, в чем разница между этими двумя подходами? Почему синтаксис _event не работает для древовидного представления? Есть ли разница между типами событий?

Спасибо

6
задан Community 23 May 2017 в 10:24
поделиться