Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

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

#c_sharp


Есть некоторый кусочек кода

var d = new MouseEventHandler((o, e) => 
{
    wnd.WindowState = WindowState.Normal;
    wnd.DragMove();
});
wnd.PreviewMouseMove += d;


Требуется отписаться от события PreviewMouseMove внутри тела делегата. То есть событие
должно сработать один раз. Как это сделать?

UPD:

Хотелось бы без создания именованной функции.
    


Ответы

Ответ 1



Чтобы переменная d была видна внутри замыкания - ее надо объявить до этого самого замыкания. MouseEventHandler d = null; d = new MouseEventHandler((o, e) => { wnd.PreviewMouseMove -= d; wnd.WindowState = WindowState.Normal; wnd.DragMove(); }); wnd.PreviewMouseMove += d;

Комментариев нет:

Отправить комментарий