放置在表单上的常规RichTextBox
元素表现出一个错误,即用鼠标水平向右滚动(水平滚动中间按钮或触摸板)会永远保持不变并永不停止。即使RichTextBox
只包含一个易于插入其边界且滚动条被禁用的单词,也是如此。
我从.NET 2.0开始遇到这个bug,并且认为它会在某些时候被修复,但我仍然在使用.NET 4.6的Windows 10上看到它。
我得到的是,我在SO或其他地方找不到任何对此的引用。有没有人遇到过这个问题,有没有人知道如何防止这种奇怪的行为?
答案 0 :(得分:0)
这似乎是由.NET使用的古老版本的Win32丰富的编辑控件引起的,该控件在十年内没有更新+。
解决方案是覆盖通过覆盖CreateParams
属性并指定更新版本而创建的富编辑控件的版本:
public partial class BetterRichTextBox : RichTextBox
{
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
static extern IntPtr LoadLibrary(string lpFileName);
protected override CreateParams CreateParams
{
get
{
LoadLibrary("MsftEdit.dll");
//Use newer versions of the RTF control
//Fixes a lot of bugs, such as http://stackoverflow.com/q/41233421/17027
//A list of versions and their DLL paths can be found at https://github.com/dpradov/keynote-nf/issues/530
CreateParams createParams = base.CreateParams;
createParams.ClassName = "RichEdit50W";
return createParams;
}
}
}