Обнаружение щелчка левой кнопкой мыши по winform с использованием Reactive extensions IObservable для событий - PullRequest
0 голосов
/ 09 июня 2011

Только начал читать на Реактивные расширения.Я пытаюсь наблюдать за простым щелчком левой кнопки мыши по моей форме win.То есть везде, где есть щелчок (на любом элементе управления в форме, включая форму), я просто хочу отобразить сообщение «Обнаружен щелчок».Пока у меня есть

var mouseDown = Observable.FromEvent<MouseButtonEventArgs>(frmMain, "MouseDown");
//missing code please fill here 
mouseDown.Subscribe(() => Debug.WriteLine("left click detected.");

Я знаю, что первая строка обнаружит любое событие мыши.Я хочу просто щелкнуть левой кнопкой мыши.Пожалуйста, опубликуйте рабочий код, чтобы я мог лучше понять это.Прямо сейчас в штопоре с умными словами, которые я никогда не использовал прежде, как .takeuntil и т. Д. Дальнейшее уточнение моего вопроса.Что такое Rx-эквивалент

protected override void WndProc(ref Message m)
{
    Console.Writeline("{0}", m.Msg);
}

Это должно наблюдать каждое наблюдаемое событие мыши или клавиатуры.спасибо

1 Ответ

3 голосов
/ 10 июня 2011

Извините, я не уверен, что это рабочий код (не могу попробовать сейчас), но он должен помочь вам начать работу.

var mouseDown = Observable.FromEvent<MouseButtonEventArgs>(frmMain, "MouseDown")
                      .Where(x => x.LeftButton == MouseButtonState.Pressed);

mouseDown.Subscribe(() => Debug.WriteLine("left click detected.");
...