如何将多行字符串打印到消息框中?

时间:2014-03-24 12:48:42

标签: .net vb.net winforms newline messagebox

我正在尝试打印一个客户的“最后收据”,我已将其存储到名为prevRecpt的sting变量中。

我希望能够按下按钮(btnLastReceipt),这会在消息框中显示此刺痛。

这可能吗?正如我已经尝试过并最终只显示第一行的消息框?

        prevRcpt = "--------------------Butlers Cinemas--------------------" &     Environment.NewLine
        prevRcpt = prevRcpt & tbTime.Text & Environment.NewLine
        prevRcpt = prevRcpt + "Operator: " + tbUser.Text & Environment.NewLine
        prevRcpt = prevRcpt + Environment.NewLine & Environment.NewLine + "-------------------------------------------------------"
        prevRcpt = prevRcpt + "Total Spent: £" + tbTotal.Text + Environment.NewLine + Environment.NewLine
        prevRcpt = prevRcpt + shoppingCart.Text + Environment.NewLine
        prevRcpt = "--------------------Butlers Cinemas--------------------" & Environment.NewLine

这是构建字符串的代码。

1 个答案:

答案 0 :(得分:6)

您是否尝试在字符串中的任何位置连接Environment.NewLine

既然我可以看到你的代码,那么你的最后一行似乎就是这样:

prevRcpt = prevRcpt & "--------------------Butlers Cinemas--------------------" & Environment.NewLine

话虽如此,你需要知道,如果一个非常长的字符串,消息框可能超出屏幕范围,所以你可能想要使用除MessageBox之外的其他内容。如果可能,请创建自己的对话框,使其默认大小适合大多数场景,并在其中使用可滚动的文本区域。将TextBox属性设置为Multiline的只读True不仅可以滚动,而且允许最终用户复制剪贴板中的内容。它可以使用户的体验更好。

我还应该提到StringBuilder类和一些常量可以帮助你使这段代码更清洁:

Const headerOrFooter As String = "--------------------Butlers Cinemas--------------------"
Const separator As String = "-------------------------------------------------------"

Dim b As New Text.StringBuilder()

b.AppendLine(headerOrFooter)
b.AppendLine(tbTime.Text)
b.AppendFormat("Operator: {0}", tbUser.Text)
b.AppendLine()
b.AppendLine()
b.AppendLine()
b.AppendLine(separator)
b.AppendFormat("Total Spent: £{0}", tbTotal.Text)
b.AppendLine()
b.AppendLine(shoppingCart.Text)
b.AppendLine(headerOrFooter)

prevRcpt = b.ToString()