2011-06-09 186 views
0

使用无扩展名的IObservable WinForm的检测刚开始阅读无扩展。我正在尝试在我的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); 
} 

这应该观察每个可观察到的鼠标或键盘事件。 谢谢

+0

Rx预发布文档今天刚刚发布:http://msdn.microsoft.com/en-us/library/hh242982(v=VS.103).aspx。你应该看看这个,看看Rx论坛。 – 2011-06-14 19:01:55

回答

3

对不起,我不知道,如果工作代码这就是(现在不能尝试一下),但它应该让你开始。

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

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

谢谢克里斯。 VAR鼠标按下= Observable.FromEvent (在此, “的MouseDown”)编译器对这个错误。我在窗体上的按钮单击事件上尝试此代码。这是指形式。智能感知不显示MouseButtonEventArgs,所以我尝试MouseEventArgs。我现在已经下载并安装了rx sdk(vs 2010,.net 4.0),添加了system.reactive ref。亚马逊上只有一本关于Reactive extensions的书。这还没有公布。现在我从http://stackoverflow.com/questions/1596158/good-introduction-to-the-net-reactive-framework研究 – Gullu 2011-06-10 16:00:52

+0

IAM gueesing我不因为IAM不使用WPF看到MouseButtonEventArgs。这个问题是winforms相关的。谢谢 – Gullu 2011-06-11 16:55:03