使用事件上的活动扩展IObservable,在winform上单击鼠标左键

时间:2011-06-09 19:56:57

标签: c# system.reactive reactive-programming

刚开始阅读Reactive扩展程序。我正试图在我的winform上点击一个简单的鼠标左键。意味着任何地方都有一个点击(在表格上的任何控件,包括表格)我只想显示一条消息“点击检测到”。到目前为止我已经

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 个答案:

答案 0 :(得分:3)

抱歉,我不确定这是否正常工作(现在无法试用),但它应该让你入门。

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

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