1

我正在使用富文本框作为我的应用程序的标签。文本框是只读的,但可以选择其内容。如何让用户在只读的富文本框中无法选择文本?

当我禁用控件时无法选择文本但我失去了颜色,因为它们变成灰色(禁用)。如何在不禁用富文本框控件的情况下禁用文本选择?

仅供参考:我使用富文本框作为标签,因为我需要将字符串中需要显示给用户的一个单词的前景色更改为红色。我使用了这篇SO 文章和以下方法来做到这一点。

string word = "red";
int start = richTextBox1.Find(word);
if (start >= 0) {
    richTextBox1.Select(start, word.Length);
    richTextBox1.SelectionColor = Color.Red;
}

编辑:顺便说一句,这是 C# WinForm

4

1 回答 1

2

只需处理选择,并将其恢复为“无”:

// so you have colour (set via the Designer)
richTextBox.Enabled = true;

// so users cannot change the contents (set via the Designer)
richTextBox.ReadOnly = true;

// allow users to select the text, but override what they do, IF they select the text (set via the Designer)
richTextBox.SelectionChanged += new System.EventHandler(this.richTextBox_SelectionChanged);

// If the user selects text, then de-select it
private void richTextBox_SelectionChanged(object sender, EventArgs e)
{
    // Move the cursor to the end
    if (this.richTextBox.SelectionStart != this.richTextBox.TextLength)
    {
        this.richTextBox.SelectionStart = this.richTextBox.TextLength;
    }
}

取自:http ://social.msdn.microsoft.com/Forums/en-US/winformsdesigner/thread/d1132ee5-acad-49f3-ae93-19d386fe2d12/

(顺便说一句,一点点搜索会有很长的路要走。)

于 2013-04-04T04:00:41.457 回答