저는 직렬 하드웨어를 통해 내 외부 하드웨어 장치와 PC 간의 통신 인터페이스로 실행되는 winforms 응용 프로그램에서 rtf 상자로 잠시 작업했습니다. 내가 가지고있는 문제는 어떤 텍스트의 색깔을 바꾸어 놓았을 때 내 외부 장치로부터의 에코 백 (echo back back)이 텍스트의 선택 (즉, 실제의 명령보다 먼저 보내지는)을 위해 색 변경의 예를 사용할 때이다.WinForm RichTextBox 텍스트 색상이 너무 많이 변경되었습니다.
기호 ';'보내기 나는 에코를 되찾고 내 장치의 응답은 모두 텍스트로 표시됩니다.
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
});
}
내가 내 응용 프로그램에서 작업을 진행하게 (많은 다른 사람의 사이에서 나는 또한 시도) 아래의 예를 사용하여 화면에 쓸 수 :
;;[UART+ERROR]
내를 받게되며 이벤트 핸들러는 표준입니다. 내가 뭘 잘못하고 있는지 확신 할 수 없다.
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에 응답을 추가하면 명령 텍스트도 빨간색이됩니다. – kennyzx
바로 그거야! 그렇게하면 쉽게 읽을 수 있습니다! – Larry
'AppendTextColor'를 호출하여 명령과 응답을 표시 할 수 있습니다. 응답을 표시하기 위해 단지'AppendText'를 호출한다면, 색깔은 기본 색상이 아니고 대신 명령 색상으로 설정됩니다. MS WORD에 대해 생각해보십시오. 선택 영역의 스타일을 지정하고 그 선택 영역 뒤에 내용을 입력하면 새 내용의 선택 영역이 스타일과 동일합니다. – kennyzx