如何以不同的颜色显示文本

时间:2013-03-20 12:13:49

标签: c# winforms richtextbox

我正在尝试使用c#中的应用程序创建GUI。我最近开始了。我在显示一些文本信息时遇到一个问题。

我正在获取多个传感器数据,每个传感器都有名称,数字和数据。在这里,我能够将所有传感器数据输入“_sensordata”。

我能够以块颜色打印来自传感器的数据,为此目的,下面的代码工作正常。问题是我想为每个传感器数据设置一些条件来显示不同颜色的文本。

例如,我有一个名为“温度”的传感器。目前,温度数据和温度传感器的名称以块颜色显示。现在当温度小于“0”或大于“150”时,我想以“红色”显示该值。我没有得到如此显示的方式。我对每个传感器都有相同类型的条件,那么如何实现这一点。我想以“块”颜色显示“sensorData.EngText”,如果它在我需要以“红色”颜色显示的范围之间(对于所有传感器)。

我有以下丰富的文本格式代码,所以任何人都可以建议我如何在下面的代码中的其中一个文本中添加颜色。

if (Display != null)
                    {        //UpdateDisplay1();
                        StringBuilder text = new StringBuilder();
                        text.Append("{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1044");
                        text.Append("{\\fonttbl{\\f0\\fnil Tahoma;}}");
                        text.Append("{\\colortbl;\\red0\\green0\\blue0;\\red255\\green0\\blue0;\\red255\\green255\\blue0;}");

                        text.Append("\\viewkind4\\uc1\\pard");
                        text.Append("{\\tx100\\tx2100\\tx4100\\tx6100\\tx8100\\tx10100");
                        text.Append("\\tx12100\\tx14100\\tx16100\\tx18100\\tx20100}");
                        text.Append("\\fs20\\ql\\b");
                        text.Append(string.Format("\\tab {0}", e.Data.SensorName));
                        text.Append("\\par\\fs35\\ql\\b0");
                        text.Append(string.Format("\\tab {0}", e.Data.EngText));

                        if (Display.InvokeRequired)
                        {
                            Display.Invoke((MethodInvoker)delegate { Display.Rtf = text.ToString(); });
                        }
                        else
                        {
                            Display.Rtf = text.ToString();
                        }
                    }

1 个答案:

答案 0 :(得分:4)

您无需手动构建RTF - 将工作留给RichTextBox!

richTextBox.SelectionBackColor = Color.Red;
richTextBox.AppendText("Text on red background");
richTextBox.SelectionBackColor = richTextBox.BackColor;
richTextBox.AppendText("Back to regular background");

现在,richTextBox不支持许多RichText功能,例如行间距--I P / Invoked SendMessage消息。