忽略排队的鼠标事件

2024-03-01

我有一个用 C# 编写的针对 .NET Compact Framework 3.5 的应用程序,在 Windows CE 上运行。有时,会在 UI 线程上执行持续一秒左右的操作。我目前设置的是Cursor.Current属性来指示应用程序正忙,但这并不能阻止急切的用户排队鼠标事件。这有时会导致意外的点击。

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


禁用控件对您没有帮助,因为我从 POS 应用程序中发现,用户可以在大约 50 毫秒内再次点击,尤其是在使用未校准的触摸屏时。

由此产生的问题之一是,在生成发票时,您无法通过重复点击生成另一张发票,因为在清除当前发票之前有 50 毫秒的延迟。

在这种情况下,我使用与此类似的模式:

    public static void ClearMouseClickQueue()
    {
        Message message;
        while (PeekMessage(out message,IntPtr.Zero, (uint) MessageCodes.WM_MOUSEFIRST,(uint) MessageCodes.WM_MOUSELAST,1) != 0)
        {    
        }
    }

    private object approvalLockObject = new object();

    private void btnApproveTransaction_Click(object sender, EventArgs e)
    {
        ApproveTransactionAndLockForm();
    }

    private void ApproveTransactionAndLockForm()
    {
        lock (approvalLockObject)
        {
            if (ApprovalLockCount == 0)
            {
                ApprovalLockCount++;
                ApproveTransaction();
            }
            else
            {
                CloseAndRetry();
            }
        }
    }

    private void ApproveTransaction()
    {
        ClearMouseClickQueue();

        this.Enabled = false;

        Logger.LogInfo("Before approve transaction");

        MouseHelper.SetCursorToWaitCursor();

        ... validate invoice and print
    }

如果您需要重新启用屏幕,请执行以下操作:

            this.Enabled = true;

            ApprovalLockCount = 0;

            DialogResult = DialogResult.None;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

忽略排队的鼠标事件 的相关文章

随机推荐

  • Bing API 请求的 Ajax 授权标头是什么?

    我正在向 Bing 搜索 API 发送 ajax 请求 当我将请求放入浏览器中时 我用于请求的 URL 就会起作用 使用 ajax 时出现 401 错误 The authorization type you provided is not
  • CTE 内的 CTE

    是否可以在 CTE 中编写 CTE 我希望它遵循这个逻辑 但解释器不喜欢这段代码 with outertest as with test as select SRnum gamenumber StartOfDistribution Appl
  • Java.lang.NoSuchFieldError:LUCENE_3_6

    我正在运行 1 7 2 elasticsearch 服务器 并使用 org elasticsearch elasticsearch groovy 1 7 2 客户端通过 TransportClient 连接到它 elasticsearch
  • 检查组件是否附加了事件侦听器

    假设有一些
  • 从 Python 句子中提取三元组

    我正在尝试使用Python中的斯坦福依赖解析器从给定的句子中提取三元组 主语 谓语 宾语 有人可以指导我完成这个任务吗 提前致谢 您可以参考以下链接来从句子中提取三元组 https github com tdpetrou RDF Tripl
  • 如何在 MediaPlayer 上设置代理

    在我的音乐流程序中 如何设置代理android media MediaPlayer通过代理网络传输链接文件的类 我了解 NTCredential UsernamePasswordCredential Proxy Authorization
  • 如何使用 github graphql API 创建新的提交?

    我正在尝试使用 github graphql api 创建一个新的提交 使用创建CommitOnBranch https github blog changelog 2021 09 13 a simpler api for authorin
  • 如何删除添加到列表中的最后一个元素?

    我在 C 中有一个列表 我在其中添加列表字段 现在 在添加时我必须检查条件 如果条件满足 那么我需要删除从列表中添加的最后一行 这是我的示例代码 List lt gt rows new List lt gt foreach User use
  • 如何使用 php / symfony 进行 Windows 身份验证

    我在 Symfony 应用程序 Intranet 上工作 我听说可以使用身份验证窗口 而不必使用传统的身份验证窗口登录 有人可以给我 1 或 2 个有关该主题的链接地址吗 我自己搜索过 但找不到合适的关键词 他是WSSE吗 先感谢您 如果您
  • MFC中Tree(CTreeCtrl)中添加特定树项的图标

    我们可以为特定的树项目添加图标吗 我使用以下功能添加带有图标的项目 HTREEITEM InsertItem LPCTSTR lpszItem int nImage int nSelectedImage HTREEITEM hParent
  • 海龟图形 - 如何控制窗口何时关闭?

    我有一个小的 python 脚本 可以绘制一些海龟图形 当我的脚本运行完毕后 海龟屏幕会自动关闭 因此为了能够暂时看到图形 我必须使用time sleep 5 在脚本末尾以延迟关闭 有什么方法可以使其更加动态 即告诉 python 我想自己
  • Vba Excel从关闭的文件中进行vlookup

    我想从关闭文件到活动打开文件进行 vlookup 关闭文件的路径将作为变体给出 可以说mypath C list 我不知道是只设置路径更好还是设置完整路径 路径 文件名 你能帮忙吗 您将需要完整路径 Example Option Expli
  • 使用 SAN 证书时公用名称无效

    我已经为内部服务器生成了一个证书 该证书也可以从外部访问 根据this https stackoverflow com a 5937270 918406所以回答 CN 和 SAN 字段相互补充 因此我将 CN 设置为 server doma
  • 带 MVC 的 PHP 前端控制器

    我正在尝试通过前端控制器设计深入研究 MVC 我想通过使用一行来调用我的整个应用程序 例如在index php中 require once myclass php output new myClass 我很想摆脱 require once
  • Zend Form:如何让它屈服于我的意志?

    我已经多次阅读该手册 我搜索了谷歌提供的有关该主题的帖子 我什至买了几本有关采埃孚的书籍 现在 为什么我还是一头雾水 我可以使用 Zend Form 制作一个可以正常验证和运行的表单 我不能做的是制作一个看起来与我希望的完全一样的表单 并带
  • 搜索部分类名,返回完整类名

    想象一下这个 页面 A 包含此内容body div class overlay homepage span span div B页包含 div class overlay results span span div 我可以使用此脚本来识别它
  • 位置:固定和宽度:继承百分比父级

    我想给一个fixed元素awidth百分比父母 这里 container 当我使用像素而不是百分比时 它就起作用了 我该怎么做 这可能吗 CSS HTML div div div Sitename div div div CSS outer
  • 可以省略不必要的启动图像吗?

    我有一个仅支持运行 iOS 10 或更高版本的 iPhone 的应用程序 我只添加了以下图像 电子邮件受保护 cdn cgi l email protection 电子邮件受保护 cdn cgi l email protection 电子邮
  • JUnit 测试 if else case

    如何将测试写入当前方法 我使用 jUnit 4 public void setImage if conditionOne myView setImageOne else myView setImageTwo 好的 您编写此方法的方式存在缺陷
  • 忽略排队的鼠标事件

    我有一个用 C 编写的针对 NET Compact Framework 3 5 的应用程序 在 Windows CE 上运行 有时 会在 UI 线程上执行持续一秒左右的操作 我目前设置的是Cursor Current属性来指示应用程序正忙