Q
要限制鼠標點擊
1
A
回答
0
您可能需要捕獲鼠標,除了處理鼠標向下/向上的消息。
不幸的是,捕獲鼠標的最好方法是觀察WM_CAPTURECHANGED消息,這意味着我們需要進入Win32 API來監視此事件,因爲Windows窗體沒有定義相應的事件。 例如,爲了處理這種的Win32消息,第一你定義一個內部類來處理低級消息WM_CAPTURECHANGED,並定義事件處理程序:
public partial class Form1 : Form
{
class CaptureChangedWindow : NativeWindow
{
public CaptureChanged OnCaptureChanged;
protected override void WndProc(ref Message m)
{
if (m.Msg == 533) // WM_CAPTURECHANGED
OnCaptureChanged();
base.WndProc(ref m);
}
}
public delegate void CaptureChanged();
...
}
接下來聲明一個成員字段來保存CaptureChangedWindow實例:
public partial class Form1 : Form
{
CaptureChangedWindow ccw;
...
}
接着定義當調用CaptureChanged代表將被調用的方法:
public partial class Form1 : Form
{
private void CaptureChangedEventHandler()
{
// your code
// e.g. now it's safe to assume that mouse is captured
}
...
}
最後,修改構造函數以創建並初始化嵌套類:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ccw = new CaptureChangedWindow();
ccw.AssignHandle(Handle);
ccw.OnCaptureChanged +=
new CaptureChanged(CaptureChangedEventHandler);
}
...
}
這就是你所需要的。然後,您可以像平常一樣處理其他鼠標事件。
+0
嘿謝謝告訴我的概念..這是我正在尋找.. – curiosity 2010-03-02 07:33:53
1
在您的形式,覆蓋WndProc方法,處理鼠標左鍵消息,如果它是公認的區域,調用基類,否則吞消息(即不叫基類)
1
您只是不響應該區域的mouseclick事件並實現其子控件的事件。
或者我不明白你的意思。
相關問題
- 1. AS3 - 限制鼠標點擊次數
- 2. 強制點擊鼠標
- 3. 鼠標點擊限制的問題,就像一個警報()
- 4. 如何限制Rails應用程序中的鼠標點擊率?
- 5. SDL鼠標點擊
- 6. Powershell,鼠標點擊
- 7. SeaDragon鼠標點擊
- 8. 鼠標點擊JTable
- 9. 鼠標點擊java
- 10. 鼠標點擊jquery
- 11. 鼠標點擊原點
- 12. 繪圖點鼠標點擊
- 13. 繪製多邊形,當鼠標點擊
- 14. 在鼠標點擊繪製ellipse2d java
- 15. Selenium複製鼠標移動&點擊
- 16. 在圖像上繪製鼠標點擊
- 17. 讓鼠標在鼠標點擊鼠標後跟着鼠標
- 18. 鼠標點擊標籤
- 19. CodedUi:鼠標點擊座標
- 20. 區分機器人鼠標點擊和人類鼠標點擊
- 21. 當鼠標點擊鼠標時(pygame)沒有繪製圓圈
- 22. C#抑制鼠標點擊多個鼠標
- 23. 鼠標點擊面板跳過點擊
- 24. 如何限制netbeans中鼠標單擊事件的點擊次數
- 25. OnLButtonUp沒有點擊鼠標點擊CStatic控制
- 26. 部隊鼠標點擊
- 27. 龍聽寫鼠標點擊
- 28. 鼠標點擊Silverlight 4
- 29. 點擊鼠標懸停
- 30. Opengl鼠標點擊矩形
Web窗體? Windows窗體? MVC? – jrista 2010-03-02 06:54:39
窗口形式 – curiosity 2010-03-02 06:57:17