感謝谷歌和其他人,我用的PeekMessage()..我會發布的代碼(可能它會幫助一些之一。)
private const uint PM_REMOVE = 0x1;
private const uint WM_MOUSEFIRST = 0x0200;
private const uint WM_MOUSELAST = 0x0209;
private const uint WM_QUIT = 0x0012;
private struct Message
{
long hwnd;
long message;
long wParam;
long lParam;
long time;
Point pt;
}
#if WindowsCE
[DllImport("coredll.dll")]
#else
[DllImport("Kernel32.dll")]
#endif
private extern static bool PeekMessage(out Message Msg, IntPtr hWnd, uint wMsgFilterMin, uint wMsgFilterMax, uint wRemoveMsg);
public void ClearMouseClickQueue()
{ Message msg;
while (PeekMessage(out msg, IntPtr.Zero, WM_MOUSEFIRST,WM_MOUSELAST, 1) != false){ }}
這是......很酷吧...
非常感謝您的回答。我嘗試了相同的代碼。最奇怪的是,它有時會丟棄單擊事件,但有些情況下會出現意外的鼠標單擊事件。 – Tuvi
@Tuvi請記住,窗體也是控制,你也可以嘗試使用鎖 –
首先感謝您的建議。問題是我的窗口由多個組件組成,一些控件與其他控件相關,這就是爲什麼上面的方法處理起來有點複雜。 – Tuvi