【问题标题】:Linebreak in TextBox文本框中的换行符
【发布时间】:2011-11-04 19:50:14
【问题描述】:

如何在 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,
      }
    }

但没有成功。

【问题讨论】:

    标签: c# silverlight windows-phone-7 textbox line-breaks


    【解决方案1】:

    我不熟悉 WP7,但 Windows 通常使用“\r\n”(即两个字符一个接一个)来表示换行符。

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

    话虽如此,我很惊讶输入的换行符正在从文本框中删除。当您说文本在服务器上不可见时,您是什么意思?是文本没有发送到服务器和/或记录在服务器上,还是您在服务器上的显示方法没有显示它?

    【讨论】:

    • 对话框中的文本(让它成为诸如facebook之类的服务)显示时没有换行符,只有空格。
    【解决方案2】:

    Windows 使用\r\n 换行,而不是\r,但这无关紧要;请改用Environment.NewLine

    另外,根据文档:

    如果 ENTER 键在控件的多行版本中创建新的一行文本,则为 true;如果 ENTER 键激活表单的默认按钮,则返回 false。默认为假。

    您是否将MultiLine 设置为true

    编辑:啊,WP7...here is an article I found 试图在 WP7 中创建一个多行文本框。

    【讨论】:

    • @wsevendays: 你的文本框是多行的,也就是说,你设置了MultiLine = true吗?如果不是,则 AcceptsReturn 根据文档无效。
    • WP7 中的 TextBox 控件没有“MultiLine”值。
    • 当我按下 return(enter) 键时,我看到文本框添加了新行,但是当我将此文本发送到服务器时,它没有显示文本包含换行符。
    • 一切正常。问题出在服务器上。
    【解决方案3】:

    Environment.NewLine 如果和正常开发一样。

    【讨论】:

    • 这比 "\r\n" 长得多,如果你有很多代码,它会大大增加你的代码。有什么区别,为什么不直接使用“\r\n”?
    • 谁在乎它是否更冗长?当您使用错误的换行符时,它会修复您的错误。它是一个常数,它可能会改变(即使这不太可能),只需使用它。没有人关心你的代码有多短,他们关心它是否真的有效。如果您不喜欢输入它,请先将其存储在变量中; var nl = Environment.NewLine.
    • 当我发送文本时,文本框中的换行符显示为空格,换行符插入文本框的开头,而不是结尾。
    【解决方案4】:

    只需将以下范围添加到 xaml 代码:

    AcceptsReturn="True" TextWrapping="Wrap"
    

    类似这样的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-22
      • 2015-05-24
      • 2011-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多