如何让 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");
我想创建一个多行文本框控件,当所有字符都是 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");