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

时间:2015-10-01 13:14:34

标签: c# wpf textbox whitespace word-wrap

我想创建一个多行文本框控件,将用作应用程序" Snap to grid"当所有字符都是等宽字符时,找到拟合字体大小(例如 - 对于包含6列的文本框,应输入正好6个字符)。 - 当然使用Word Wrap!

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

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

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

如果我在宽度= 8个字符的文本框中写入,则以下(或粘贴该字符串等):

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

我想接受:(_ =空格)

第一行:Hello___

第二行:___世界

第三行:!

真正发生的是:

第一行:你好___

第二行:世界!

(第二行开头根本没有空格)

PS - 在调试时,我可以看到空格(所有空格)都被视为字符串的一部分。

1 个答案:

答案 0 :(得分:1)

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

其次,Word Wrap可能忽略了额外的空格,因此您需要用unicode不间断空格替换普通空格。其中的unicode字符为\u00A0

您需要使用unicode非中断空格替换所有常规空格:

string spaceReplacer = "\u00A0";

要使用它,试试这个:

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

甚至这个:

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