Страницы

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

вторник, 13 ноября 2018 г.

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

Есть некоторый кусочек кода
var d = new MouseEventHandler((o, e) => { wnd.WindowState = WindowState.Normal; wnd.DragMove(); }); wnd.PreviewMouseMove += d;
Требуется отписаться от события PreviewMouseMove внутри тела делегата. То есть событие должно сработать один раз. Как это сделать?
UPD:
Хотелось бы без создания именованной функции.


Ответ

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

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

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