C #: Как обработчик событий связан с методом с именем «On .....»? - PullRequest
1 голос
/ 11 января 2011

привет всем Мой друг говорит, что "в c # каждый обработчик событий связан с методом, имя которого - On ...." Я имею в виду, например, что SelectedIndexChanged комбинированного списка привязан к методу OnSelectedIndexChanged.

Мой вопрос: как я могу это увидеть?

Пожалуйста, расскажите мне больше об этом, если это возможно.

Спасибо

Ответы [ 3 ]

2 голосов
/ 11 января 2011

Это соглашение о дизайне классов, а не что-то обязательное .NET. Большинство .NET и сторонних библиотек используют это соглашение. Это просто код, который нужно кодировать, чтобы соответствовать этой конвенции. Это не автоматически, если вы хотите спросить это.

2 голосов
/ 11 января 2011

Методы, начинающиеся с «Вкл.», Используются в качестве соглашения. Эти методы никоим образом не «связаны» с событием, а событие «связано» с ними (с учетом общепринятого определения / процедуры регистрации события).

На самом деле они поднимают событие, предложенное словами после префикса «Вкл».

Например:

protected void OnSelectedIndexChanged(EventArgs e)
{
   if(SelectedIndexChanged!= null)
      SelectedIndexChanged(this, e);
}

где событие SelectedIndexChanged определяется где-то так:

public event EventHandler SelectedIndexChanged;

Соглашение и практика .net утверждают, что для каждого события у вас должен быть переопределяемый защищенный метод, который вызывает событие.

В производном классе вы можете сделать что-то подобное:

protected override void OnSelectedIndexChanged(EventArgs e)
{
   base.OnSelectedIndexChanged(e);

   // your custom code here
}

ПРИМЕЧАНИЕ. Чтобы быть абсолютно правильным, это событие и другие могут использовать различные производные типы из класса EventArgs, но концепция та же.

2 голосов
/ 11 января 2011

Ваше утверждение не совсем верно.

Вы можете привязать любой метод к событию, если этот метод имеет требуемую подпись. Не каждое событие связано с методом, и не каждый метод, связанный с событием, начинается с «Onxxx». Соглашение об именах довольно популярно среди разработчиков. (по умолчанию соглашение об именах в Visual Studio: [Имя компонента] _ [Имя события].

Вы можете увидеть, какие методы связаны с какими событиями, в представлении «Дизайн», в подпанели «Свойства», выбрать вкладку событий (значок, похожий на штормовое освещение). У вас будет список событий и связанный с ним метод (если он есть)

...