gpt4 book ai didi

c# - 为什么文本在 RichTextBox 中消失了?

转载 作者:行者123 更新时间:2023-11-30 13:02:31 26 4
gpt4 key购买 nike

我正在使用 RichTextBoxes 在 c# 中创建一个平面文件阅读器(如果您愿意,可以使用简单的十六进制编辑器)。一个 RTB 显示十六进制值,另一个显示 ASCII 值。

我的计划是每行显示一条“记录”。因此,如果我想查看 10 条长度为 1000 的记录,则 ASCII 中每行 1000 个字符将有 10 行,十六进制边的长度为 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();

最佳答案

对于遇到与我相同问题的人,我找到了解决此问题的方法。

我没有使用 RichTextBox,而是找到了另一个可以下载的名为 ScintillaNET 的控件。到目前为止,我已经能够毫无问题地将我的大部分代码切换为使用此控件。一些函数略有不同,例如,它不再是 hextTextBox.Clear(),而是 hexTextBox.ResetText(),或者 hexTextBox.SelectionStart 现在是 hexTextBox.Selection.Start。

存在细微差异,但此控件修复了当记录长度变得非常大时像素消失的问题。

代码可以从以下地址下载:http://scintillanet.codeplex.com/

希望这对遇到与我相同问题的其他人有所帮助。

关于c# - 为什么文本在 RichTextBox 中消失了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15119161/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com