【发布时间】:2014-12-03 23:00:25
【问题描述】:
我已经在我的 winforms 应用程序中使用 rtf 盒子一段时间了,该应用程序作为我的外部硬件设备和我的 PC 之间的串行通信接口运行。我遇到的问题是,当使用任何颜色更改示例来选择文本(在我的实际命令之前通过串行发送)时,从我的外部设备返回的回声也发生了一些文本颜色更改。
发送符号';'我从我的设备中得到回声和响应,所有这些都以文本着色。
;;[UART+ERROR]
我的接收事件处理程序是标准的:
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
//fking threading
string rxString = serialPort1.ReadExisting(); // running on worker thread
this.Invoke((MethodInvoker)delegate
{
textLog.AppendText(rxString); // runs on UI thread
});
}
为了写入屏幕,我使用了下面的示例(我也尝试过许多其他示例)来开始我的应用程序。我不确定自己做错了什么。
private void AppendTextColor(RichTextBox box, Color color, string text)
{
int start = box.TextLength;
box.AppendText(text);
int end = box.TextLength;
// Textbox may transform chars, so (end-start) != text.Length
box.Select(start, end - start);
{
box.SelectionColor = color;
// could set box.SelectionBackColor, box.SelectionFont too.
}
box.SelectionLength = 0; // clear
}
【问题讨论】:
-
所以你想通过颜色来区分命令和响应,命令文本的颜色是黑色(默认),响应是红色,但是当你将响应附加到 RichTextBox 时,命令文字也变红了?
-
没错!这样做会让它们更容易阅读!
-
您可以调用
AppendTextColor来显示命令和响应,指定不同的颜色。如果只是调用AppendText显示响应,颜色不是默认颜色,而是设置为命令的颜色。想想 MS WORD,如果你设置一个选择的样式并在该选择之后键入,新内容的样式与选择的样式相同。
标签: c# .net winforms colors richtextbox