【问题标题】:.NET RichTextBox Tab Character.NET RichTextBox 制表符
【发布时间】:2019-01-31 18:25:20
【问题描述】:

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

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

用户每次按下 TAB 时,它都会在 .Text 属性中显示为无法识别的字符。

这是怎么回事?

示例截图:

【问题讨论】:

  • “无法识别的字符”是什么意思? TAB 的 ASCII 值为 8。它可能会在其中插入 char(8)。
  • @RoyDictus .Text 应该显示转义值; \t
  • 基本上,如果我在 RichTextBox 中输入以下内容:“嗨[tab key press]我的名字是 John Doe”。当我检查 RichTextBox 的 .Text 属性时,它显示为值“Hi[]My name is John Doe”。当我按下它时,它就像不识别 TAB 字符一样。它只是显示一个正方形。稍后我会附上截图。
  • @RoyDictus 我认为 TAB 是 9。BACKSPACE 是 8。See ASCI Character Set
  • @LarsTech:你是对的,当然。我的立场是正确的。

标签: .net winforms richtextbox


【解决方案1】:

在中间窗口中:

?RichTextBox1.Text 结果为"Hi mint ",即使AcceptTab=True 我们认为它应该是"Hi[TAB Key]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)

【讨论】:

  • 谢谢,我会试试这个。虽然这不是很理想,因为用户将多次保存,我讨厌每次保存时都必须编写一个文本文件。但值得一试
【解决方案2】:

我最终搜索了被按下的“TAB”字符的所有实例,并将其替换为“\t”,这很有效:

Dim tabString = Convert.ToChar("    ") //This is the [] string
RichTextBox.Text = RichTextBox.Text.Replace(tabString, "     ")

不是最好的解决方案,仍然不明白为什么 RichTextBox 没有自动拾取 TAB 键但它现在可以工作。

【讨论】:

    【解决方案3】:

    RichTextBox 中有一个属性叫做“AcceptsTab”,只要将此属性设置为“true”即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-10
      • 1970-01-01
      相关资源
      最近更新 更多