Wie verwende ich eine neue Zeile in VB msgbox ()…?

Antworten:

91
  • für VB: vbCrLf odervbNewLine
  • für VB.NET: Environment.NewLine oder vbCrLfoderConstants.vbCrLf

Informationen zur neuen VB.NET-Zeile: http://msdn.microsoft.com/en-us/library/system.environment.newline.aspx

Die Informationen für Environment.NewLinekamen von Cody Gray und J Vermeire

Spaß Mun Pieng
quelle
9
Nicht vbCrLffür VB.NET-Code verwenden! Dies dient nur der Kompatibilität mit portierten VB 6-Anwendungen. Sie sollten Environment.NewLinestattdessen verwenden, wie in der Antwort von J. Vermeire vorgeschlagen.
Cody Gray
Ich stimme Ihnen zu, dass Environment.NewLine verwendet werden sollte, aber weil es plattformübergreifend ist. Es gibt \ r \ n für Windows zurück, aber nur \ n für Unix / Linux-basierte Plattformen.
Fun Mun Pieng
Ja, das ist ein sehr guter Grund, es zu benutzen. Angesichts der Tatsache, dass alternative Implementierungen der CLR (wie Mono) VB.NET unterstützen, ist es eine gute Idee, Code mit Blick auf die Plattformunabhängigkeit zu schreiben. Darüber hinaus ist es immer eine gute Idee, Standard-.NET Framework-Redewendungen anstelle von Holdovers aus Gründen der Abwärtskompatibilität zu verwenden. Der größte Fehler, den ein VB.NET-Programmierer machen wird, ist die Annahme, dass es dieselbe Sprache wie VB 6 ist. Dies ist ausdrücklich nicht der Fall! Die wahre Objektorientierung kratzt nur die Oberfläche der Unterschiede. Anders zu tun ist, sich selbst Unrecht zu tun.
Cody Gray
2
Abstimmung abstimmen, weil es bei mir nicht funktioniert. Wenn Sie EditPoint.Insert (vbNewLine) in einem VB-Makro aufrufen, wird \ r \ n eingefügt. vbLf ist die richtige Antwort auf die gestellte Frage.
Samuel
25

Versuchen Sie es mit vbcrlfeiner neuen Zeile

msgbox "This is how" & vbcrlf & "to get a new line"
Entwickler
quelle
Das Beispiel wird geschätzt, weil ich nicht mit VB arbeite und das Verkettungsformat nicht kenne. Sie werden offensichtlich nicht in doppelten Anführungszeichen interpretiert.
Tim Morton
23

Dies sind die Zeichenfolgen zum Erstellen einer neuen Zeile:

  • vbCr ist der Wagenrücklauf (Rückkehr zum Zeilenanfang),

  • vbLf ist der Zeilenvorschub (zur nächsten Zeile gehen)

  • vbCrLf ist der Wagenrücklauf / Zeilenvorschub (ähnlich wie beim Drücken der Eingabetaste)

Ich bevorzuge es, vbNewLineda es systemunabhängig ist ( vbCrLfauf einigen Systemen möglicherweise keine echte neue Linie)

Pranay Rana
quelle
@ Andrew - während meiner College-Tage, als ich in vb programmiere
Pranay Rana
1
Theoretisch hast du wohl recht. Aber in jeder Implementierung, die ich gesehen habe, vbNewLinewird einfach definiert als vbCrLf. Es gibt keinen Unterschied.
Cody Gray
Ich würde nichts ändern. Ich stimme dir so zu wie es ist. Ich denke vbNewLine, drückt Ihre Absicht klarer aus. Es wurde offensichtlich entworfen , um eine neue Zeile einzufügen. Ich habe nur einen Hilfskommentar geliefert. "Unter der Haube" machen sie das Gleiche. Solche Implementierungsdetails sollten nicht in Ihren Code gelangen.
Cody Gray
16

Verwenden Sie die Environment.NewLineEigenschaft

Jens
quelle
Dies ist die richtige Lösung für VB.NET. Überspringen Sie den vbCrLf/ vbNewLineUnsinn, es sei denn, Sie verwenden VB 6.
Cody Gray
10

Fügen Sie ein vbNewLineas hinzu:

"text1" & vbNewLine & "text2"
Hans Olsson
quelle
5

Eine Alternative zu Environment.NewLine ist die Verwendung von:

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

von System.Text.RegularExpressions

Auf diese Weise können Sie Text ohne Verkettung von Zeichenfolgen maskieren, wie dies in C #, C, Java möglich ist

Schlacke
quelle
3

Das richtige Format ist:

"text1" + vbNewLine + "text2"
user6225788
quelle
2

Verwenden Sie den Befehl "vbNewLine"

Beispiel

Hello & vbNewLine & "World"

wird in einer Zeile als Hallo und in einer anderen als Welt angezeigt

SQAHero
quelle
1

Sie können das Wagenrücklaufzeichen (Chr (13)) verwenden, ein Zeilenvorschubzeichen (Chr (10)) ebenfalls

MsgBox "Message Name: " & objSymbol1.Name & Chr(13) & "Value of BIT-1: " & (myMessage1.Data(1)) & Chr(13) & "MessageCount: " & ReceiveMessages.Count
D_T
quelle
1
Module MyHelpers
    <Extension()>
    Public Function UnEscape(ByVal aString As String) As String

       Return Regex.Unescape(aString)

    End Function
End Module

Verwendung:

console.writeline("Ciao!\n".unEscape)
user2885689
quelle
1

Auf meiner Seite habe ich eine Sub-MyMsgBox erstellt, die \ n in der Eingabeaufforderung von ControlChars.NewLine ersetzt

Bertrand
quelle
1

Viele der oben genannten Dinge haben bei mir nicht funktioniert. Was am Ende funktioniert hat, ist

Chr(13)
Ariel Gabizon
quelle
Sollte es nicht Chr (10) sein?
Lenard Bartha
@LenardBartha wahrscheinlich nicht stackoverflow.com/a/38792168/2727437
Marcucciboy2
1
msgbox "This is the first line" & vbcrlf & "and this is the second line"

oder in .NET msgbox "This is the first line" & Environment.NewLine & "and this is the second line"

Martin Reicher
quelle
0

Diese Arbeit für mich: MessageBox.Show("YourString" & vbcrlf & "YourNewLineString")

pietro smusi
quelle
-1

Das Meldungsfeld muss mit einem Text und nicht mit einer Variablen enden

Harish Narayanaswamy
quelle
-1

msgbox ("Ihr Text hier" & Environment.NewLine & "mehr Text") ist der einfachste Weg. Es macht keinen Sinn, Ihren Code schwieriger oder komplizierter zu machen, als Sie es brauchen ...

user3174223
quelle
1
Ihre Antwort ( Environment.NewLine) wurde bereits vor 3 Jahren gegeben und ist die am höchsten bewertete Antwort. Dies ist eher ein Kommentar. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlassen Sie einen Kommentar unter seinem Beitrag. Sie können jederzeit Ihre eigenen Beiträge kommentieren. Sobald Sie einen ausreichenden Ruf haben, können Sie jeden Beitrag kommentieren.
Scott Solmer