【问题标题】:Dual mouse scroll events双鼠标滚动事件
【发布时间】:2016-05-19 10:53:46
【问题描述】:

我们的客户有特定的鼠标 - 他们有 2 个卷轴。 在“mainScroll_click”上,他希望我们触发事件 A 和“scroll2_click”事件 B。

可以用c#吗?还是我应该寻求鼠标驱动方面的帮助?

对于我一直使用的中间按钮:

if (e.MiddleButton) { MessageBox.Show("Middle!"); }

但我找不到任何关于 MiddleButton2 的信息

【问题讨论】:

  • 我会查看 2 轮产品的驱动程序文档。由于这是完全定制的并且与众不同,他们甚至可能有一个 SDK,您可以将其与您的程序合并。
  • 通常扩展功能被软映射到键,例如 PgUp/PgDwn 或箭头。或 XButton。我要么推动对所述设备的物理访问,要么创建一些测试应用程序来记录事件。
  • XButton1 和 XButton2 对应于 ThumbButtons(普通鼠标左侧的那些),而不是第二个滚轮
  • 处理MouseClick事件并检查当您使用第二个滚轮点击时e.Button的值。
  • winapi 和 Winforms 都不支持多个鼠标滚轮或第二个中间按钮。此类鼠标通常需要自定义驱动程序,并且可以识别浏览器和 Office 等流行程序并使用 UI 自动化对其进行操作。但是,是的,当然不是你的。如果供应商的软件无法添加对其他程序的支持,那么您将遇到一个没有人可能接听的困难支持电话。

标签: c# winforms mousewheel


【解决方案1】:

没有 middle2,因为默认鼠标假定为 2 或 3 个按钮。

然而,带有用于向后和向前等额外特殊按钮的鼠标几乎与轮子一样长,

如果您查看MouseButtons Enumeration,您会发现它提供了 2 个特殊按钮 XButton1、XButton2,我希望制造商映射到其中一个,但这取决于鼠标制造商

要获得更多细节,您需要移动到鼠标事件,而不仅仅是基本的点击,例如 MouseCLick、MouseUp、MouseDown

    private void panel1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) 
    {
        // Update the mouse path with the mouse information
        Point mouseDownLocation = new Point(e.X, e.Y);

        string eventString = null;
        switch (e.Button) {
            case MouseButtons.Left:
                eventString = "L";
                break;
            case MouseButtons.Right:
                eventString = "R";
                break;
            case MouseButtons.Middle:
                eventString = "M";
                break;
            case MouseButtons.XButton1:
                eventString = "X1";
                break;
            case MouseButtons.XButton2:
                eventString = "X2";
                break;
            case MouseButtons.None:
            default:
                break;
        }

如果它们不够好,无法符合标准鼠标接口,您可能需要在低得多的级别处理它们,在这种情况下,nitroycs 回复 Mouse Wheel Event (C#) 显示如何拦截和处理原始事件

【讨论】:

  • 鼠标从客户端到达,它似乎没有拇指按钮,并通过第二次滚轮点击触发了 X2 按钮。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多