如果行以特定字符开头,则更改多行文本框中行的颜色?

时间:2014-07-25 17:38:19

标签: c# .net textbox

这么长的故事简短,我想这样做,如果多行文本框中的一行有生命 '!'它使线条颜色变红。否则,它仍然是黑色的。

使用if语句听起来很简单,但我似乎无法弄清楚到底要做什么。这样的事情有可能吗?

我正在使用C#。 *为了澄清,我希望它能自动完成,而不需要按下按钮。

2 个答案:

答案 0 :(得分:4)

TextBox不支持您需要的内容,您应该使用RichTextBox

无论如何,使用RichTextBox执行所需操作的最简单方法是从中获取文本,清除内容并使用所需格式添加文本:

private void FormatTextBox(RichTextBox richText, string p, 
            Color textColor, Color highColor)
{
    string[] lines = richText.Lines;
    richText.Text = "";

    foreach (string line in lines)
    {
        richText.SelectionColor = line.StartsWith(p) ? highColor : textColor;
        richText.AppendText(line + "\n");
    }
}

用法:

private void button1_Click(object sender, EventArgs e)
{
    FormatTextBox(richTextBox1, "!", Color.Black, Color.Red);
}

当然,使用选择或在单个AppendText调用中添加相同格式的文本可以改善这一点,但正如我所说,这很简单。

答案 1 :(得分:1)

可能不完美,但它确实起作用:

        string charac = "!";
        int lengthAll = richTextBox1.TextLength;
        int location = richTextBox1.Find(charac);
        int length = lengthAll-location;
        richTextBox1.Select(location, length);
        richTextBox1.SelectionColor = Color.Red;

RichTextBox我刚写了一些简单的一行!在它。