【问题标题】:WinForms RichTextBox infinite horizontal scroll bugWinForms RichTextBox 无限水平滚动bug
【发布时间】:2016-12-20 01:06:14
【问题描述】:

放置在表单上的常规RichTextBox 元素会出现一个错误,即使用鼠标(水平滚动中间按钮或触摸板)向右水平滚动会一直持续并且永不停止。即使RichTextBox 仅包含一个很适合其边界的单词并且滚动条被禁用,情况也是如此。

我从 .NET 2.0 开始就遇到了这个错误,并认为它会在某个时候得到修复,但我仍然在带有 .NET 4.6 的 Windows 10 上看到它。

让我感到困惑的是,我在 SO 或互联网上的其他地方找不到任何对此的参考。以前有没有人遇到过这种情况,有没有人知道如何防止这种奇怪的行为?

【问题讨论】:

    标签: .net winforms richtextbox


    【解决方案1】:

    这似乎是由 .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;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2012-09-29
      • 2010-11-05
      • 2012-03-15
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      • 1970-01-01
      • 2013-01-01
      • 1970-01-01
      相关资源
      最近更新 更多