我在c#应用程序中使用RichTextBox,我想在使用ctrl键滚动光标时禁用RichTextBox缩放,如何禁用此功能?请帮忙。
答案 0 :(得分:1)
您可以覆盖自定义RichTextBox
控件的WndProc并过滤WM_MOUSEWHEEL
消息。然后重新定义wParam
内容值(此值报告当时按下的鼠标按钮组合),并将其设置为0
(IntPtr.Zero
)。
>
然后,让我们知道您已处理此消息,返回了m.Result
(0
)中的IntPtr.Zero
。
(有关此信息,请参见WM_MOUSEWHEEL
消息上的文档)。
要对其进行测试,请创建一个新的Class并将其内容替换为此代码(Namespace
除外)。生成解决方案/项目。在您的工具箱中找到RTBNoZoom
控件,并将其放在窗体上。
using System;
using System.Windows.Forms;
public class RTBNoZoom : RichTextBox
{
private const int MK_CONTROL = 0x0008;
private const int WM_MOUSEWHEEL = 0x020A;
public RTBNoZoom() { }
protected override void WndProc(ref Message m)
{
switch (m.Msg)
{
case WM_MOUSEWHEEL:
if (((int)m.WParam & MK_CONTROL) == MK_CONTROL)
{
m.WParam = IntPtr.Zero;
m.Result = IntPtr.Zero;
}
break;
default:
break;
}
base.WndProc(ref m);
}
}
答案 1 :(得分:1)
为richtextbox ContentsResized 事件创建一个事件处理程序。其中,输入
private void richTextBox1_ContentsResized(object sender, ContentsResizedEventArgs e)
{
richTextBox1.ZoomFactor = 1.0f;
}
答案 2 :(得分:-1)
您可以使用MOUSEWHEEL命令和control.modifiers属性来控制应用程序的缩放。
protected override void DefWndProc(ref Message m)
{
if (m.Msg == WM_MOUSEWHEEL && Control.ModifierKeys == Keys.Control)
{
// Do what you want here
}
else
{
base.DefWndProc(ref m);
}
}