C#RichTextBox选择问题

时间:2010-09-09 16:39:54

标签: c# controls

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

e.g:

  • 文字是:“只是另一个foobar”
  • 我想要选择的是:“只是ano [ther foo] bar”([]之间的东西
  • 实际选择的内容:“只是[另一个foobar]”

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

2 个答案:

答案 0 :(得分:14)

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;
        }
    }
}

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

答案 1 :(得分:4)

自从这个问题得到解答后,事情可能已经发生了变化,但我有一个更简单的解决方案:

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

听起来很疯狂,但在属性框中将其设置为false不起作用。 您必须在代码中执行此操作,即使该属性已经为false。 那就行了!