Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF文本框和空格字符换行_C#_Wpf - Fatal编程技术网

C# WPF文本框和空格字符换行

C# WPF文本框和空格字符换行,c#,wpf,C#,Wpf,我的观察: 在使用支持换行功能的文本框测试WPF应用程序以允许多行文本时,如果我刚开始键入单词,并到达文本框的最右侧,则单词和光标将根据键入中最后一个空格/字符间隔换行到下一行 如果在第1行输入单个字符,然后按住空格键,则光标将在文本框中滚动到看不见的位置,并且当光标到达第1行的末尾时,不会环绕到第2行。一旦我键入空格以外的字符,该字符将换行并从第2行开始。如果我使用左箭头键向后移动,光标将从第二行消失,并且在第一行的某段时间内不可见,直到它穿过以前键入的所有空格。如果我将光标放在第1行末尾并键

我的观察:

在使用支持换行功能的文本框测试WPF应用程序以允许多行文本时,如果我刚开始键入单词,并到达文本框的最右侧,则单词和光标将根据键入中最后一个空格/字符间隔换行到下一行

如果在第1行输入单个字符,然后按住空格键,则光标将在文本框中滚动到看不见的位置,并且当光标到达第1行的末尾时,不会环绕到第2行。一旦我键入空格以外的字符,该字符将换行并从第2行开始。如果我使用左箭头键向后移动,光标将从第二行消失,并且在第一行的某段时间内不可见,直到它穿过以前键入的所有空格。如果我将光标放在第1行末尾并键入另一个非空格字符,则该字符通常会换行到第2行,在第2行上的前一个字符前面有几个空格。相对于文本框中的文本,内容将包括所有可见字符加上文本框视图区域外包含的所有空格字符

我的问题:

文本框上是否有我缺少的属性设置,以便在空格字符到达第一行末尾时强制将其换行,而不是从屏幕上滚动

谢谢


Mark

做了一些研究,并将文本上的空格“”替换为不间断空格“/u00a0”,从而将光标保持在文本框的边界内

我只是将其连接起来作为概念证明,这将导致递归调用,所以不要在生产代码中使用它。可能使用转换器,或者在数据绑定属性设置器中

    /// <summary>
    ///     Handle textbox on text changed event
    /// </summary>
    private void TextBoxBase_OnTextChanged(object sender, TextChangedEventArgs e)
    {
        // Replace space with non-breaking space
        TestTextBox.Text = TestTextBox.Text.Replace(" ", "\u00a0");
        // Put the cursor at the end of the textbox (updating text sets the cursor at the start)
        TestTextBox.CaretIndex = TestTextBox.Text.Length;
    }
//
///文本更改事件的句柄文本框
/// 
私有void TextBoxBase_OnTextChanged(对象发送方,textchangedventargs e)
{
//用不间断的空格替换空格
TestTextBox.Text=TestTextBox.Text.Replace(“,”\u00a0”);
//将光标放在文本框的末尾(更新文本将光标设置在开头)
TestTextBox.CaretIndex=TestTextBox.Text.Length;
}

你使用了
Wrap
还是
WrapWithOverflow
?Wrap,但我尝试了两种方法,结果都是一样的。不确定问题可能是什么,但似乎空格被解释为一个不可破解的单词,请参见以下内容:是的——我也看到了/想到了这一点。我希望我能俯瞰到一些财产。根据链接评论(我之前在试图查找有关问题的信息时发现了该链接),我想我的应用程序中可能有一些东西是问题的根源,因此我创建了一个全新的,简单的程序,只需一个文本框,以确保我尽可能地处于基本/默认模式,并且我仍然看到相同的问题。你最终解决了还是没有解决?这是因为它可以防止“溢出”问题--但它也会破坏单词包装,因为RichTextBox将内容处理为一个长单词,而不是几个用空格分隔的单词,因此它不是真正可行的。@WarpedBoard确认这对WPF RichTextBox不起作用,按空格键的行为类似于换行符。尝试了一些不同的UTF/ASCI代码等,但无法在RichTextbox上使用相同的技巧。