如何让 wordwrap 将字符串中的空格视为常规字符?

How to make wordwrap consider a whitespace in a string as a regular character?

我想创建一个多行文本框控件,当所有字符都是 Monospaced 并且找到合适的字体大小(例如- 对于具有 6 列的文本框,应恰好输入 6 个字符)。 - 当然是自动换行!

至于上述 - 没关系。找到了计算字体大小的正确方法。

唯一的问题是我需要创建一个 "Alt+Enter" 选项来表示 "Enter"。

出于某些原因,我无法使用 \r\n 并且需要所有剩余的行 space 都充满白色 space。 问题是 wrap 不接受大于文本框宽度的 spaces。 例如:

如果我在宽度为 8 个单元格的文本框中写入以下内容(或粘贴该字符串等):

"Hello World!" ("Hello+6Whitespaces+World!")

我想收到:(_=whitespace)

第一行:Hello___

第二行:___World

第三行:!

真正发生的是:

第一行:Hello___

第二行:世界!

(第二行开头根本没有space)

PS - 在调试时我可以看到 spaces(全部)被视为字符串的一部分。

首先,尝试 Environment.NewLine 而不是 \r\n。这将确保您在目标平台上获得正确的换行符。

其次,Word Wrap 可能会忽略额外的 space,因此您需要将正常的 space 替换为不间断的 unicode space。对应的 unicode 字符是 \u00A0.

您需要将所有正常的 space 替换为不间断的 unicode space:

string spaceReplacer = "\u00A0";

要使用它,试试这个:

textBox1.Text = textBox1.Text.Replace(" ", spaceReplacer);

甚至这样:

textBox1.Text = textBox1.Text.Replace(" ", "\u00A0");