【问题标题】:why all text gets selected in RichTextBox in C#? [duplicate]为什么在 C# 的 RichTextBox 中选择所有文本? [复制]
【发布时间】:2015-11-17 16:15:48
【问题描述】:

我只有带有 RichTextBox(windows 窗体)的 form1,我没有代码。

假设我们通过键盘在 RichTextBox 中写入“123456789”。 问题是:当我尝试使用鼠标从右到左选择数字 9 时,甚至在我选择其余文本之前,都会自动选择整个文本。

但我可以从左到右选择 9,而不选择其余文本。而且我也可以从右到左选择数字 1,而不选择其余文本。仅当您从右到左选择最后一个数字时才会出现此问题。

您可以从右到左选择任何数字,其余文本不会被选中,但如果您从右到左选择最后一个数字,则整个文本都会被选中。

我检查了 RichTextBox 属性,但没有什么有趣的地方。 TexBox 的行为不是这样,但我不想使用文本框。

我的问题是:如何使用鼠标在 RichTextBox 中从右到左选择数字 9 并避免自动选择整个文本。谢谢你

【问题讨论】:

  • 其实我不能选择右边的最后一个字符或者
  • 这里是 Henrik Eriksen 给出的简单解决方案。添加richTextBox1.AutoWordSelection = false;在表单加载时,它可以工作。谢谢

标签: c# winforms richtextbox


【解决方案1】:

请参阅 Hans Passant 给出的答案,所有功劳归他所有。
(在这一点上,我觉得给他更多的代表就像在尼亚加拉大瀑布里撒尿一样)

C# RichTextBox selection problem

用汉斯的话来说:

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

我以前绝对可以复制这种行为,并且自定义 RichTextBox 为我修复了它。

【讨论】:

  • 谢谢 Equalsk。对不起,我是 C# 的新手。我添加了新类并在其上粘贴了您的代码,但 RichTextBox 单词和 OnHandleCreated 方法都带有红色下划线,这表明我还需要声明其他内容。任何想法?谢谢
  • 好的,我找到了另一个更简单的解决方案:添加richTextBox1.AutoWordSelection = false;在表单加载时,它可以工作。谢谢
  • 只要你不想要自动选词,我想那很好。很高兴它有效。
猜你喜欢
  • 2010-11-10
  • 1970-01-01
  • 1970-01-01
  • 2010-10-02
  • 1970-01-01
  • 1970-01-01
  • 2010-10-12
  • 2011-11-23
  • 2012-02-13
相关资源
最近更新 更多