多色文本框C#

多色文本框C#,c#,winforms,textbox,C#,Winforms,Textbox,如果我使用name.ForeColor=Color.red,我想在文本框中以2种颜色显示文本,例如1行红色2行蓝色所有文本都会更改颜色,但我希望只更改一行颜色。为此使用RichTextBox,下面是Nathan Baulch的扩展方法 public static class RichTextBoxExtensions { public static void AppendText(this RichTextBox box, string text, Color color) {

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

为此使用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;
    }
}
阅读更多内容

您需要使用

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

richTextBox1.SelectionFont = new Font("Verdana", 12, FontStyle.Bold);
richTextBox1.SelectionColor = Color.Red;

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

其次,在上述任何一种情况下,使用常规的textbox控件都无法做到这一点。
您需要查找/创建一个具有不同行为的自定义UI控件,或使用更高级的控件,例如富文本框。

下面是一个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;
        }

@Tudor ForeColor是windows窗体属性,您可以查看NLog的richtextbox自定义目标源。特别是如果你需要这个来记录日志:Pany idea如何使用textbox?使用wf textbox无法做到这一点,你要么创建自己的用户控件,要么使用RichTextBox…我现在正在研究你的代码
var userid=“USER0001”;var message=“访问被拒绝”;var-box=new-RichTextBox{Dock=DockStyle.Fill,Font=new-Font(“Courier-new”,10)};AppendText(“[”+DateTime.Now.ToShortTimeString()+“]”,Color.Red);框。追加文本(“”);追加文本(userid,Color.Green);框。追加文本(“:”);框。追加文本(消息,颜色。蓝色);box.AppendText(Environment.NewLine);新表单{Controls={box}}.ShowDialog()
并且不明白如何做RichTextBox将不会以新的形式出现?这不是我的代码,只需将扩展方法粘贴到新文件中,将其添加到项目中即可。添加RichTextBox控件并使用AppendText方法.ok,但“新建表单{Controls={box}}.ShowDialog();”我不需要显示在新的形式,如何调用这个方法不使用新的形式没有RichTextBox的方式?当有太多的单词需要迭代时,速度会非常慢。