Как подписаться на события другого класса в C#?

попробуй это, надеюсь, это поможет:

@Override
public void onPause() {
    myWebView.onPause();
    myWebView.pauseTimers();
    super.onPause();
}

@Override
public void onResume() {
    super.onResume();
    myWebView.resumeTimers();
    myWebView.onResume();
}


@Override
protected void onDestroy() {
    myWebView.destroy();
    myWebView = null;
    super.onDestroy();
}
18
задан AustinWBryan 15 September 2019 в 17:46
поделиться

3 ответа

public class EventThrower
{
    public delegate void EventHandler(object sender, EventArgs args) ;
    public event EventHandler ThrowEvent = delegate{};

    public void SomethingHappened() => ThrowEvent(this, new EventArgs());
}

public class EventSubscriber
{
    private EventThrower _Thrower;

    public EventSubscriber()
    {
        _Thrower = new EventThrower();
        // using lambda expression..could use method like other answers on here

        _Thrower.ThrowEvent += (sender, args) => { DoSomething(); };
    }

    private void DoSomething()
    {
       // Handle event.....
    }
}
27
ответ дан 30 November 2019 в 07:44
поделиться

Предполагая, что ваше событие обрабатывается EventHandler ,

0
ответ дан 30 November 2019 в 07:44
поделиться

Внутри вашей формы:

private void SubscribeToEvent(OtherClass theInstance) => theInstance.SomeEvent += this.MyEventHandler;

private void MyEventHandler(object sender, EventArgs args)
{
    // Do something on the event
}

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

  1. Вам необходимо убедиться, что ваш метод (обработчик событий) имеет соответствующее объявление, соответствующее типу делегата события в другом классе.

  2. Событие в другом классе необходимо чтобы быть видимым вам (например, общедоступным или внутренним).

  3. Подпишитесь на действительный экземпляр класса, а не на сам класс.

6
ответ дан 30 November 2019 в 07:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: