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

Rev*_*114 0 .net c# textbox

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

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

我正在使用 C#。*澄清一下,我希望它自动执行,不需要按下按钮。

Ali*_*eza 5

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");
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

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

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