C# 双鼠标滚动事件

C# 双鼠标滚动事件,c#,winforms,mousewheel,C#,Winforms,Mousewheel,我们的客户有特定的鼠标-它们有两个滚动条。 在“主滚动点击”中,他希望我们触发事件A,在“滚动点击”中触发事件B 是否可以使用c#?或者我应该在鼠标驱动程序中寻求帮助 对于我一直使用的中间按钮: if (e.MiddleButton) { MessageBox.Show("Middle!"); } 但是我找不到关于MiddleButton2的任何信息,因为默认的鼠标是2或3个按钮,所以没有middle2 然而,带有特殊按钮的鼠标,比如前后键,几乎和轮子一样长 如果你看一下,你会发现它提供了2个

我们的客户有特定的鼠标-它们有两个滚动条。 在“主滚动点击”中,他希望我们触发事件A,在“滚动点击”中触发事件B

是否可以使用c#?或者我应该在鼠标驱动程序中寻求帮助

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

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

但是我找不到关于MiddleButton2的任何信息,因为默认的鼠标是2或3个按钮,所以没有middle2

然而,带有特殊按钮的鼠标,比如前后键,几乎和轮子一样长

如果你看一下,你会发现它提供了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;
        }

如果它们没有很好地符合标准mice接口,您可能需要在更低的级别处理它们,在这种情况下,Nitroenycs reply to将显示如何拦截和处理原始事件

我将查看两轮产品的驱动程序文档。由于这是非常定制的,而且不寻常,他们甚至可能有一个SDK,您可以将其与您的程序合并。通常扩展功能软映射到键,例如PgUp/PgDwn或箭头。或者是X钮扣。我要么推动对所述设备的物理访问,要么创建一些测试应用程序来记录事件。XButton1和XButton2对应于拇指按钮(普通鼠标左侧的拇指按钮),不指向第二个滚轮手柄
鼠标单击
事件,并检查当您单击使用第二个滚轮时
e.Button
的值。winapi和Winforms都不支持多个鼠标滚轮或第二个中间按钮。这类鼠标通常需要一个自定义的驱动程序,其编写目的是识别流行的程序,如浏览器和Office,并通过UI自动化操作它们。但当然不是你的。如果供应商的软件无法添加对其他程序的支持,那么您将遇到一个困难的支持电话,没有人可能会接听。鼠标从客户端到达,它似乎没有拇指按钮,并通过第二轮单击触发了X2按钮。