我想使用鼠标中键清除RichTextBox,但它还会激活鼠标滚动功能,类似于您在网络浏览器中找到的功能。当垂直滚动条可见时(有足够的数据)并按下鼠标中间的按钮,会出现滚动光标,您可以向上或向下移动光标向上或向下滚动。如何禁用鼠标滚动?
鼠标滚动似乎是一个Windows(或鼠标驱动程序)功能,所以如何阻止MouseDown事件(如果按下鼠标中键)到达任何负责鼠标滚动的例程?
答案 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);
}
}