在TextBox中制作特定的文本Boldefaced

嗨我目前有一个texbox,当用户按下不同的按钮时会向用户输出信息。 我想知道是否有办法让我的一些文字加粗,其余的不是。

我尝试过以下方法:

textBox1.FontWeight = FontWeights.UltraBold; textBox1.Text. = ("Your Name: " ); TextBox1.FontWeight = FontWeights.Regular; textBox1.Text += (nameVar); 

唯一的问题是,使用这种方式会使一切都变得大胆或没有。 有没有办法做到这一点? 我在C#中使用WPF项目

任何意见或建议表示赞赏。 谢谢!

编辑:所以现在我想尝试你所有建议的RichText框,但我似乎无法得到任何东西出现在其中:

 // Create a simple FlowDocument to serve as the content input for the construtor. FlowDocument flowDoc = new FlowDocument(new Paragraph(new Run("Simple FlowDocument"))); // After this constructor is called, the new RichTextBox rtb will contain flowDoc. RichTextBox rtb = new RichTextBox(flowDoc); 

rtb是我在我的wpf中创建的richtextbox的名称

谢谢

使用RichTextBox,在我为这个问题写的方法下面 – 希望它有所帮助;-)

 ///  /// This method highlights the assigned text with the specified color. ///  /// The text to be marked. /// The new Backgroundcolor. /// The RichTextBox. /// The zero-based starting caracter position. public static void ChangeTextcolor(string textToMark, Color color, RichTextBox richTextBox, int startIndex) { if (startIndex < 0 || startIndex > textToMark.Length-1) startIndex = 0; System.Drawing.Font newFont = new Font("Verdana", 10f, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 178, false); try { foreach (string line in richTextBox.Lines) { if (line.Contains(textToMark)) { richTextBox.Select(startIndex, line.Length); richTextBox.SelectionBackColor = color; } startIndex += line.Length +1; } } catch { } } 

您可以将TextBlock与其他TextBlockRun内部一起使用:

  normal text bold text more normal text more bold text  

您将需要使用RichTextBox来实现此目的:

    Your Name:     

但为什么你想要“你的名字”可以编辑? 当然你会想要它作为一个单独的,只读的标签?

     

常规TextBox仅支持此类样式属性的全部或全部设置。 您可能希望查看RichTextBox ,但是,您不能以您尝试的方式为Text属性指定一组值 – 您需要使用FlowDocument通过Document属性构造文本主体。

有关使用FlowDocument的概述和一些示例, 请阅读此内容 。

看看RichTextBox控件它基本上和TextBox一样工作,但允许更多的自定义,当然还需要Rich Text ,它允许部分格式化。

以jwillmer的优秀例子为例,我做了一些调整,因为它为我着色了整个错误行:

  public static void ChangeTextcolor(string textToMark, Color color, RichTextBox richTextBox) { int startIndex = 0; string text = richTextBox.Text; startIndex = text.IndexOf(textToMark); System.Drawing.Font newFont = new Font("Verdana", 10f, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, 178, false); try { foreach (string line in richTextBox.Lines) { if (line.Contains(textToMark)) { richTextBox.Select(startIndex, textToMark.Length); richTextBox.SelectionColor = color; richTextBox.SelectionFont = newFont; } } } catch{ } } 

此外,我在文本之前和之后添加了唯一标记以进行着色以获取文本,然后将其删除。

jwillmer的回答对我来说有些错误。 这些通过添加:

 using System.Drawing; 

然后将输入更改为:

 public static void ChangeTextcolor(string textToMark, System.Drawing.Color color, System.Windows.Forms.RichTextBox richTextBox, int startIndex) 

这是因为我的代码正在寻找System.Windows.Controls.RichTextbox而不是Windows.Forums.RichTextBox 。 而System.Windows.Media.Color不是System.Drawing.Color