.NET RichTextBox Tab字符

3

我在一个.NET Windows窗体应用程序中使用RichTextBox控件。我允许用户在文本框内按下TAB键。但是当我保存文本框中的.Text值时,它会显示为这样:

"This[]is[a]tab[]test[]"

每当用户按下TAB键时,它会显示为未识别的字符在.Text属性中。这是怎么回事呢?示例截图:
enter image description here

“未识别的字符”是什么意思?TAB的ASCII值为8。它可能会插入char(8)的字符。 - Roy Dictus
@RoyDictus。文本应显示转义值:\t - Aaron McIver
基本上,如果我在RichTextBox中键入以下内容:“Hi [tab键按下]我的名字是John Doe”。当我检查RichTextBox的.Text属性时,它会将其显示为“Hi []我的名字是John Doe”的值。就好像它无法识别我按下TAB键时的TAB字符一样。它只显示一个方块。我很快会附上屏幕截图。 - mint
1
@RoyDictus 我认为TAB是9。BACKSPACE是8。参见ASCI字符集 - LarsTech
@LarsTech:当然,你是正确的。我改正我的错误。 - Roy Dictus
3个回答

2
在中间窗口:
使用 AcceptTab=True,RichTextBox1.Text 的结果是 "Hi mint",但我们认为它应该是 "Hi[TAB键]Mint"。
RichTextBox1.Rtf 的结果是:
"{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil\fcharset0 Microsoft Sans Serif;}}  \viewkind4\uc1\pard\f0\fs17 Hi\tab mint\tab\par  }"

我相信你正在寻找以下技巧:

RichTextBox1.SaveFile("C:\abc.txt", RichTextBoxStreamType.UnicodePlainText)

谢谢,我会尝试这个方法。虽然这并不是理想的解决方案,因为用户会多次保存,我不想每次都写入文本文件。但还是值得一试的。 - mint

0
我最终搜索了所有按下“TAB”字符的实例,并将其替换为“\t”,这样就解决了问题:
Dim tabString = Convert.ToChar("    ") //This is the [] string
RichTextBox.Text = RichTextBox.Text.Replace(tabString, "     ")

这不是最好的解决方案,但我仍然不明白为什么 RichTextBox 不能自动捕捉 TAB 键,但现在它可以工作。


0
在RichTextBox中有一个名为“AcceptsTab”的属性,只需将此属性设置为“true”即可。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接