使特定文本在文本框中粘贴

您好,我目前有一个texbox打印出信息给用户,当他们按diffrentbutton。 我想知道是否有办法让我的一些文本粗体,而其余的不是。

我曾试过以下几点:

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

唯一的问题是使用这种方式将使所有的事情变得粗暴或无所作为。 有没有办法做到这一点? 即时通讯使用C#中的WPF项目

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

编辑:所以现在即时试图做你所有build议的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中创build的richtextbox的名称

谢谢

使用RichTextBox,下面我已经写了这个问题的方法 – 希望它可以帮助;-)

 /// <summary> /// This method highlights the assigned text with the specified color. /// </summary> /// <param name="textToMark">The text to be marked.</param> /// <param name="color">The new Backgroundcolor.</param> /// <param name="richTextBox">The RichTextBox.</param> /// <param name="startIndex">The zero-based starting caracter position.</param> 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使用TextBlock ,或者在里面Run

 <TextBlock> normal text <TextBlock FontWeight="Bold">bold text</TextBlock> more normal text <Run FontWeight="Bold">more bold text</Run> </TextBlock> 

您将需要使用RichTextBox来实现这一点:

 <RichTextBox Name="richTB"> <FlowDocument> <Paragraph> <Run FontWeight="Bold">Your Name:</Run> <Run Text="{Binding NameProperty}"/> </Paragraph> </FlowDocument> </RichTextBox> 

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

 <StackPanel Orientation="Horizontal"> <Label FontWeight="Bold">Your Name:</Label> <TextBox Text="{Binding NameProperty}"/> </StackPanel> 

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

有关使用FlowDocument的概述以及一些示例, 请阅读 。

看看RichTextBox控件它基本上与TextBox一样工作,但允许更多的自定义,并且需要使用允许部分格式化的Rich Text 。

在WPF中,我find了一个很好的解决schemehttp://www.devx.com/dotnet/Article/34644 。 我希望能帮助你。

以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{ } } 

另外,我在文本之前和之后添加了独特的标签以获取文本颜色,然后将其删除。