将RichTextBox更改为标签

时间:2013-04-04 03:56:33

标签: c# .net winforms richtextbox

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

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

仅供参考:我使用富文本框作为标签,因为我需要将字符串中的一个单词的前颜色更改为红色,这需要向用户显示。我使用this SO文章和以下方法来执行此操作。

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

编辑: BTW这是C#WinForm

1 个答案:

答案 0 :(得分: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/

(顺便说一下,of searching还有很长的路要走。)