2011-06-09 212 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