我正在 c# 中使用RichTextBoxes
. 一个 RTB 显示十六进制值,另一个显示 ASCII 值。
我的计划是每行显示一个“记录”。因此,如果我要查看 10 条长度为 1000 的记录,则 ASCII 中每行将有 10 行 1000 个字符,而十六进制侧的长度为 3000。
我将属性动态设置rtb.RightMargin
为一条记录的长度。
我遇到的问题是当记录非常长时,ascii 端超过 3500 个字符使十六进制端非常大,我发现当右边距变为时,文本开始在记录的中间和末尾消失太大了。例如:
hexRtb.RightMargin = 7500 //This is because it's triple the size of the ascii text.
在 中hex rtb
,它将显示文本的第一部分,直到我开始向中间滚动,所有文本完全停止显示。如果我设法点击记录的这些空白部分,文本会出现,但在滚动离开后会再次消失。
我无法弄清楚发生了什么。这似乎仅在 RightMargin 设置为非常大的数字时才会发生。较小的数字,所有文本都将毫无问题地显示。
有人遇到过这样的事情吗?
如果有帮助,这是一个代码示例。
int asciiRecordLength = mHexReader.RecordSize;
int hexRecordLength = mHexReader.RecordSize * HexByte; //This is to convert the ascii record length to a hex record length
asciiTextBox.RightMargin = TextRenderer.MeasureText(mHexReader.GetAsciiValues().Substring(0, asciiRecordLength), asciiTextBox.Font).Width;
hexTextBox.RightMargin = TextRenderer.MeasureText(mHexReader.GetHexValues().Substring(0, hexRecordLength), hexTextBox.Font).Width;
//Populate text boxes
hexTextBox.Text += mHexReader.GetHexValues(); //This gets all of the records to be read
asciiTextBox.Text += mHexReader.GetAsciiValues();