Oi Eu atualmente tenho um texbox que imprime informações para o usuário quando eles pressionam botões diferentes. Eu queria saber se havia uma maneira de fazer apenas alguns dos meus textos em negrito, enquanto o resto não é.
Eu tentei o seguinte:
textBox1.FontWeight = FontWeights.UltraBold; textBox1.Text. = ("Your Name: " ); TextBox1.FontWeight = FontWeights.Regular; textBox1.Text += (nameVar);
O único problema é que o uso dessa maneira tornará tudo em negrito ou nada. Existe uma maneira de fazer isso? Estou usando o projeto WPF em c #
Quaisquer comentários ou sugestões são apreciados. Obrigado!
EDIT: Então, agora eu estou tentando fazer a checkbox RichText que todos vocês sugeriram, mas eu não consigo obter nada para aparecer nele:
// 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 é o nome do meu richtextbox que eu criei no meu wpf
obrigado
use um RichTextBox, abaixo de um método que escrevi para este problema – espero que ajude 😉
/// /// 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 { } }
Você pode usar o TextBlock
com outros TextBlock
s ou Run
s dentro:
normal text bold text more normal text more bold text
Você precisará usar um RichTextBox
para conseguir isso:
Your Name:
Mas por que você quer que “Seu nome” seja editável? Certamente você iria querer isso como um label separado, somente leitura?
Um TextBox
regular suporta apenas a configuração de tudo ou nada dessas propriedades estilísticas. Você pode querer olhar para RichTextBox
, porém, você não pode simplesmente especificar um conjunto de valores para uma propriedade Text
da maneira que você tentou – você precisará trabalhar com um FlowDocument
para construir seu corpo de texto através da propriedade Document
.
Para uma visão geral do trabalho com um FlowDocument
, e alguns exemplos, dê uma leitura .
Dê uma olhada no Controle RichTextBox, ele basicamente funciona da mesma forma que o TextBox, mas permite mais customizações e, é claro, usa Rich Text, que permite a formatação parcial.
Tomando o excelente exemplo de jwillmer, fiz alguns ajustes porque estava colorindo toda a linha de erro para mim:
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{ } }
Além disso, adicionei tags exclusivas antes e depois do texto para colorir para obter o texto e, em seguida, removi-as.
A resposta de jwillmer teve alguns erros para mim. Estes foram resolvidos adicionando:
using System.Drawing;
e depois alterando as inputs para:
public static void ChangeTextcolor(string textToMark, System.Drawing.Color color, System.Windows.Forms.RichTextBox richTextBox, int startIndex)
Isso porque meu código estava procurando por System.Windows.Controls.RichTextbox
não Windows.Forums.RichTextBox
. E System.Windows.Media.Color
não System.Drawing.Color