19

我想在文本框中以 2 种颜色显示文本,例如 1 行红色 2 蓝色,如果我使用name.ForeColor = Color.Red;所有文本更改颜色,但我希望只更改 1 行颜色。

4

4 回答 4

53

为此使用 RichTextBox,这是 Nathan Baulch 的扩展方法

public static class RichTextBoxExtensions
{
    public static void AppendText(this RichTextBox box, string text, Color color)
    {
        box.SelectionStart = box.TextLength;
        box.SelectionLength = 0;

        box.SelectionColor = color;
        box.AppendText(text);
        box.SelectionColor = box.ForeColor;
    }
}

在这里阅读更多

于 2012-05-14T16:54:57.347 回答
18

您需要使用RichTextBox

然后,您可以通过选择文本并更改选择颜色或字体来更改文本颜色。

richTextBox1.SelectionFont = new Font("Verdana", 12, FontStyle.Bold);
richTextBox1.SelectionColor = Color.Red;
于 2012-05-14T16:54:57.443 回答
1

这是一个带有 Fontdialog 和 Colordialog 的示例。

void TextfarbeToolStripMenuItemClick(object sender, EventArgs e)
        {
            colorDialog1.ShowDialog();
            richTextBox1.ForeColor = colorDialog1.Color;
            listBox1.ForeColor = colorDialog1.Color;
        }

        void FontsToolStripMenuItemClick(object sender, EventArgs e)
        {
            fontDialog1.ShowDialog();
            richTextBox1.Font = fontDialog1.Font;
            listBox1.Font = fontDialog1.Font;
        }

        void HintergrundfarbeToolStripMenuItemClick(object sender, EventArgs e)
        {
            colorDialog1.ShowDialog();
            richTextBox1.BackColor = colorDialog1.Color;
            listBox1.BackColor = colorDialog1.Color;
        }
于 2015-08-16T14:54:17.120 回答
0

首先,您提供的详细信息 + 标签是不够的 - C# 没有一个特定的 UI 框架,它有几个:WPF、Winforms、ASP.NET、Silverlight。

其次,您不能使用上述任何内容中的常规文本框控件来执行此操作。您将需要找到/创建具有不同行为的自定义 UI 控件或使用更高级的控件,例如富文本框。

于 2012-05-14T16:55:26.097 回答