Простой сценарий: пользовательский класс, вызывающий событие. Я хочу использовать это событие внутри формы и реагировать на него.
Как я могу это сделать?
Обратите внимание, что форма и пользовательский класс являются отдельными классами.
Простой сценарий: пользовательский класс, вызывающий событие. Я хочу использовать это событие внутри формы и реагировать на него.
Как я могу это сделать?
Обратите внимание, что форма и пользовательский класс являются отдельными классами.
Внутри вашей формы:
private void SubscribeToEvent(OtherClass theInstance) => theInstance.SomeEvent += this.MyEventHandler;
private void MyEventHandler(object sender, EventArgs args)
{
// Do something on the event
}
Вы просто подписываетесь на событие в другом классе так же, как на событие в своей форме. Три важные вещи, которые нужно помнить:
Вы должны убедиться, что ваш метод (обработчик событий) имеет соответствующее объявление, чтобы соответствовать типу делегата события в другом классе.
Событие другого класса должно быть видно вам (т. е. общедоступным или внутренним).
Подпишитесь на действительный экземпляр класса, а не на сам класс.
Предполагая, что ваше событие обрабатывается EventHandler, этот код работает:
protected void Page_Load(object sender, EventArgs e)
{
var myObj = new MyClass();
myObj.MyEvent += new EventHandler(this.HandleCustomEvent);
}
private void HandleCustomEvent(object sender, EventArgs e)
{
// handle the event
}
Если для обработки вашего «настраиваемого события» требуется какая-то другая подпись, вам нужно будет использовать ее.