Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RichTextBox&;禁用鼠标滚动_C#_Scroll_Mouse_Richtextbox - Fatal编程技术网

C# RichTextBox&;禁用鼠标滚动

C# RichTextBox&;禁用鼠标滚动,c#,scroll,mouse,richtextbox,C#,Scroll,Mouse,Richtextbox,我想使用鼠标中键清除RichTextBox,但它也会激活鼠标滚动功能,类似于您在web浏览器中找到的功能。当垂直滚动条可见(有足够的数据)并且您按下鼠标中键时,会出现滚动光标,您可以通过向上或向下移动光标来向上或向下滚动。如何禁用鼠标滚动 鼠标滚动似乎是Windows(或鼠标驱动程序)的一项功能,因此如何阻止鼠标向下事件(如果按下鼠标中键)到达负责鼠标滚动的任何例程?无需滚动RichTextBox,只需从RichTextBox继承即可 public class NoScrollRichTextB

我想使用鼠标中键清除RichTextBox,但它也会激活鼠标滚动功能,类似于您在web浏览器中找到的功能。当垂直滚动条可见(有足够的数据)并且您按下鼠标中键时,会出现滚动光标,您可以通过向上或向下移动光标来向上或向下滚动。如何禁用鼠标滚动


鼠标滚动似乎是Windows(或鼠标驱动程序)的一项功能,因此如何阻止鼠标向下事件(如果按下鼠标中键)到达负责鼠标滚动的任何例程?

无需滚动RichTextBox,只需从RichTextBox继承即可

public class NoScrollRichTextBox : RichTextBox
{
   const int WM_MOUSEWHEEL = 0x020A;

   protected override void WndProc(ref Message m)
   {
      // This will completely ignore the mouse wheel, which will disable zooming as well
      if (m.Msg != WM_MOUSEWHEEL)
         base.WndProc(ref m);
   }
}

检查0x207和0x208,中间按钮向下和向上:

using System;
using System.Windows.Forms;

class MyRtb : RichTextBox {
    protected override void WndProc(ref Message m) {
        if (m.Msg == 0x207) this.Clear();
        else if (m.Msg != 0x208) base.WndProc(ref m);
    }
}

我明白了,但我不想禁用“鼠标滚轮滚动”,我想禁用“鼠标移动滚动”。你见过如何在点击鼠标滚轮后移动鼠标在网页中向各个方向滚动吗?我也不想禁用鼠标滚轮点击,因为我想用它在不激活“鼠标移动滚动”光标的情况下清除richtextbox的内容。代码需要一点更正。如您所述,消息是0x207和0x208,但代码使用0x208和0x209。调试应用程序时,我看到此方法的迭代次数过多。它看起来不是一个有效的解决方案,尤其是当RichTextBox用于显示来自串行端口的数据时,它似乎可以处理与RichTextBox相关的所有消息。哦,上帝。它所花费的3纳秒是可以测量地将事情拖下来的吗?在C#中,是否有可能在方法对MouseDown/Up事件进行操作后停止它,因为这就是所有问题,事件被执行,但其他例程也被激活。建议让事件顺其自然,但这只是一个RichTextBox,必须有一种方法来永久处理它,就像e.hanlded用于按键。代码就是这样做的,它确保本机Windows控件看不到消息。我完全不明白你为什么认为这有问题。