发生意外的鼠标单击事件 .NET Compact Framework 3.5

Unexpected mouse click event occurs .NET Compact Framework 3.5

我是 c# .NET Compact Framework 3.5 的新手。

我正试图阻止急于排队的用户发生鼠标事件。这有时会导致意外点击。

在 .NET Compact Framework 平台上忽略排队的鼠标消息的最佳方法是什么?遗憾的是,代码必须在 UI 线程上 运行。

我试过: 1.禁用window和Application.DoEvents();然后 Enabled window --> 它没有用。 2. 我阅读了很多有关 PeekMessage() 的内容 --> 但无法理解。

请推荐我可以学习的资源

非常感谢。

像这样

class MyForm : Form
{
    private bool _processing;

    private void OnMousedown(....) // really depends on what you use, 
        // Click/doubleclick/Up/down - concept is the same
    {
        if (_processing)
            return;
        _processing = true;
        // do something 
        . . . . . . 

        _processing = false;
     }
. . . . . 

您可能需要在每个控制事件上执行此操作

感谢 Google 和其他人,我使用了 PeekMessage()..我会 post 一个代码(可能会对某些人有所帮助。)

    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){ }} 

那是……很酷吧……

另一个禁用触摸输入的选项是使用带有小 window(元素)的 TouchRegisterWindow 和 TouchUnregisterWindow。这可用于禁用当前对话框中的所有点击,而不必一一禁用所有元素。

详情见 http://www.hjgode.de/wp/2012/09/24/windows-mobile-disable-touch-input/