2

C# のアプリケーションから Windows を使用して GUI を作成しようとしています。最近始めました。テキスト情報の表示に問題が 1 つあります。

複数のセンサー データを取得しています。各センサーには名前と番号とデータがあります。ここで、すべてのセンサー データを「_sensordata」に取得できます。

センサーからのデータをブロックカラーで印刷できます。そのために、以下のコードは完全に機能しています。問題は、センサーデータごとにテキストを異なる色で表示するための条件をいくつか設定したいことです。

たとえば、「温度」という名前のセンサーが 1 つあります。現在、温度データと温度センサーの名前がブロックカラーで表示されています。温度が「0」未満または「150」を超える場合、値を「赤色」で表示したいと思います。そのように表示する方法がわかりません。各センサーに同じタイプの条件があるので、これをどのように実装できますか。「sensorData.EngText」を「ブロック」色で表示したい場合は、それ以外の場合は「赤」色で表示する必要があります(すべてのセンサーの場合)。

以下のリッチテキスト形式のコードがあるので、以下のコードのテキストの 1 つに色を追加する方法を教えてください。

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();
                        }
                    }
4

1 に答える 1

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 機能があります。たとえば、行間隔 - そのための IP/Invoked SendMessage メッセージです。

于 2013-03-20T12:31:11.703 に答える