RichTextBox&禁用鼠标滚动

时间:2010-08-29 00:50:10

标签: c# scroll mouse richtextbox

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

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

2 个答案:

答案 0 :(得分:1)

没有滚动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);
   }
}

答案 1 :(得分:1)

检查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);
    }
}