如何在VB的msgbox()函数中使用换行符“\n”?

87

MsgBox() 中,换行符 \n 的替代方案是什么?


1
你是在问VB.NET还是VB 6? - Cody Gray
请参见 *VB.NET中的行尾标识符?*。 - Peter Mortensen
1
@PeterMortensen 谁决定将这个问题改为VB.Net? - user692942
17个回答

113

12
在VB.NET代码中不要使用vbCrLf! 它只是为了兼容移植的VB 6应用程序。相反,你应该使用J. Vermeire答案中建议的Environment.NewLine - Cody Gray
我同意你的观点,应该使用Environment.NewLine,因为它是跨平台的。它在Windows中返回\r\n,在基于Unix/Linux的平台上只返回\n。 - Fun Mun Pieng
是的,这是使用它的非常好的理由。考虑到CLR的替代实现(如Mono)支持VB.NET,编写具有平台独立性的代码是一个好主意。除此之外,采用标准的.NET Framework习惯用法,而不是为了向后兼容而保留的旧习惯,总是一个好主意。任何VB.NET程序员会犯的最大错误就是认为它和VB 6是相同的语言。它绝对不是!真正的面向对象只是差异的冰山一角。假装否认这一点只会对自己不利。 - Cody Gray
2
因为它对我不起作用,所以我要给它点个踩。在VB宏中调用EditPoint.Insert(vbNewLine)会插入\r\n。vbLf是正确的答案。 - Samuel
1
我刚刚声明了一个公有的字符串变量,叫做n……只是为了方便起见。(Public n As String = Environment.NewLine - Galacticai

34

尝试使用vbcrlf来换行

msgbox "This is how" & vbcrlf & "to get a new line"

1
感谢这个例子,因为我不使用VB并且不知道连接格式。显然它们在双引号内不被解释。 - Tim Morton

24

以下是用于创建新行的字符序列:

  • vbCr 是回车符(回到行首),

  • vbLf 是换行符(到下一行)

  • vbCrLf 是回车符/换行符(类似于按Enter键)

我更喜欢使用 vbNewLine,因为它不依赖于操作系统(在某些系统上,vbCrLf可能不是真正的新行符)


@Andrew - 在我上大学的时候,我用VB进行编程。 - Pranay Rana
1
理论上来说,我想你是对的。但在我看过的每个实现中,vbNewLine只是被定义为vbCrLf。它们没有任何区别。 - Cody Gray
我不会改变任何东西。我同意现在的方式。我认为 vbNewLine 更清晰地表达了你的意图。它显然被设计用于插入新行。我只是提供辅助评论。在“引擎盖下”,它们做的事情是一样的。像这样的实现细节不应该泄漏到你的代码中。 - Cody Gray

17

这是VB.NET的正确解决方案。除非您正在使用VB 6,否则请跳过vbCrLf/vbNewLine的无聊内容。 - Cody Gray

11

加入vbNewLine如下:

"text1" & vbNewLine & "text2"

5

替代Environment.NewLine的方法是使用:

Regex.Unescape("\n\tHello World\n")

来自 System.Text.RegularExpressions

这使您能够转义文本,而无需像在 C#、C、Java 中那样连接字符串。


4
正确的格式是:
"text1" + vbNewLine + "text2"

2

使用命令“vbNewLine”

示例

Hello & vbNewLine & "World"

将显示为 Hello在一行上,World在另一行上


2
您可以使用 Environment.NewLine 或者 vbCrLF 或者 vbNewLine
MsgBox($"Hi!{Environment.NewLine}I'M HERE")

1
Module MyHelpers
    <Extension()>
    Public Function UnEscape(ByVal aString As String) As String

       Return Regex.Unescape(aString)

    End Function
End Module

使用方法:

console.writeline("Ciao!\n".unEscape)

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