我想在文本框中展示两种颜色的文字,例如第一行为红色,第二行为蓝色。如果我使用 name.ForeColor = Color.Red;
所有文字都会变成红色,但我只希望改变一行的颜色。
使用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;
}
}
点击这里以获取更多信息。
new Form {Controls = {box}}.ShowDialog();
这个方法,如何在不使用新窗体的情况下调用它? - Wizard您需要使用RichTextBox。
然后可以通过选择文本并更改选择的颜色或字体来更改文本颜色。
richTextBox1.SelectionFont = new Font("Verdana", 12, FontStyle.Bold);
richTextBox1.SelectionColor = Color.Red;
这是一个与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;
}
首先,您提供的细节和标签不足 - C# 没有一个特定的 UI 框架,它有几个:WPF、Winforms、ASP.NET、Silverlight。
其次,在上述任何一个框架中,您都不能使用常规文本框控件来完成此操作。 您需要找到/创建一个具有不同行为的自定义 UI 控件,或者使用更高级的控件,例如富文本框。