文本框中的换行符

6
我该如何在WP7中的TextBox中获得换行?我正在开发社交类应用程序(类似于Facebook),如果我设置AcceptReturn=true,则会给我提供一个可视化(ui)换行符,但是当我将此文本发送到服务器时,我发现没有换行。请帮助我解决这个问题。我已经尝试过


void whatsend_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) {
      if (e.Key == Key.Enter) {
        whatsend.Text +="\r";//or /n,
      }
    }

但是没有成功。
4个回答

6

Windows使用\r\n作为换行符,而不是\r,但这并不重要;请使用Environment.NewLine代替。

此外,根据文档:

如果在控件的多行版本中按ENTER键会创建新行,则为true;如果按ENTER键会激活窗体的默认按钮,则为false。默认值为false。

您是否将MultiLine设置为true

编辑:啊,WP7... 这是我发现的一篇文章,试图在WP7中创建一个多行文本框。


1
@wsevendays:你的文本框是多行的吗?即,是否设置了MultiLine = true?如果没有,根据文档,AcceptsReturn无效。 - Ed S.
WP7中的TextBox控件没有“MultiLine”值。 - SevenDays
当我按下回车键时,我看到文本框会添加新行,但是当我将这个文本发送到服务器时,它不显示文本包含换行符。 - SevenDays
一切都没问题。问题出在服务器上。 - SevenDays

2
只需在XAML代码中添加以下范围:
AcceptsReturn="True" TextWrapping="Wrap"

像这样:

<TextBox x:Name="InputText" Height="200" VerticalAlignment="Top" Width="456" TextAlignment="Center" TextWrapping="Wrap" AcceptsReturn="True"/>

2

如果它与正常开发相同,Environment.NewLine


这比"\r\n"长得多,如果你有很多这样的代码,它会使你的代码变得臃肿。有什么区别,为什么不直接使用"\r\n"? - qJake
谁在乎代码冗长?这样做可以修复你的 bug,因为你使用了错误的换行符。虽然它是一个常量,但它有可能会发生更改(即使这不太可能),所以直接使用它。没有人关心你的代码有多短,他们关心它是否真正起作用。如果你不喜欢输入它,那么先将它存储到一个变量中;var nl = Environment.NewLine - Ed S.
当我发送文本时,文本框中的换行符显示为空格,并在文本框开头插入新行,而不是在结尾处插入。 - SevenDays

0

我不熟悉WP7,但Windows通常使用"\r\n"(即连续的两个字符)来表示换行。

如果您将两者都附加到文本中,是否可以解决您的问题?

话虽如此,我很惊讶输入的换行符被从文本框中删除了。当您说服务器上无法查看文本时,是什么意思?是指文本未被发送或记录在服务器上,还是您在服务器上的显示方法没有显示它?


对话框中的文本(例如Facebook服务)显示时没有换行,只有空格。 - SevenDays

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接