C#RichTextBox选择问题

can*_*rem 9 c# controls

我在应用程序上有一个RichTextBox控件,这就是我的问题:当应用程序运行时,如果我开始用鼠标选择一个单词中的一些字符并继续在它外面选择,则选择会自动包含我开始选择的整个单词如果我没有弄错的话,我想从中选择一个部分的任何其他单词,ms word-ish.

例如:

  • 文字是:"只是另一个foobar"
  • 我想要选择的是:"只是ano [ther foo] bar"([]之间的东西)
  • 实际选择的是什么:"只是[另一个foobar]"

问题在于鼠标选择,如果我用键盘选择文本就可以了.此外,控件的自动字选择属性被关闭.知道为什么会这样吗?

Han*_*ant 15

AutoWordSelection属性实现中存在一个愚蠢的错误.解决方法同样愚蠢.在项目中添加一个新类并粘贴下面显示的代码.编译.将新控件从工具箱顶部拖放到表单上,替换现有RTB.

using System;
using System.Windows.Forms;

public class FixedRichTextBox : RichTextBox {
    protected override void OnHandleCreated(EventArgs e) {
        base.OnHandleCreated(e);
        if (!base.AutoWordSelection) {
            base.AutoWordSelection = true;
            base.AutoWordSelection = false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我在此MSDN Library页面底部留下了一个注释,其中包含错误的详细信息.


小智 5

自从回答了这个问题以来,情况可能已经改变,但是我有一个更简单的解决方案:

只需添加richTextBox1.AutoWordSelection = false;到代码中即可。

听起来很疯狂,但是false在properties-box中将此设置为无效。即使该属性已经为false,也必须在代码中执行此操作。然后就可以了!