Ich baue eine Anwendung , wo ich mehrere Werte und bauen einen Text mit ihnen erfassen sollte: Name
, Age
usw.
Die Ausgabe ist ein einfacher Text in a TextBox
.
Ich versuche, diese Informationen irgendwie erscheinen zu lassen columns
, deshalb versuche ich, sie zu trennen tab
, um sie klarer zu machen.
Zum Beispiel anstatt:
Ann 26
Sarah 29
Paul 45
Ich möchte, dass es Folgendes zeigt:
Ann Tab 26 Sarah Tab 29 Paul Tab 45
Irgendwelche Tipps, wie man insert
die Registerkarten in meinen Text einfügt?
Antworten:
Versuchen Sie, das
\t
Zeichen in Ihren Zeichenfolgen zu verwendenquelle
Hazar hat recht mit seinem
\t
. Hier ist die vollständige Liste der Escape-Zeichen für C #:\'
für ein einfaches Zitat.\"
für ein doppeltes Zitat.\\
für einen Backslash.\0
für ein Nullzeichen.\a
für einen Alarmcharakter.\b
für eine Rücktaste.\f
für einen Formularvorschub.\n
für eine neue Zeile.\r
für einen Wagenrücklauf.\t
für eine horizontale Registerkarte.\v
für eine vertikale Registerkarte.\uxxxx
für einen Unicode-Hex-Wert (z\u0020
. B. ).\x
ist dasselbe wie\u
, aber Sie benötigen keine führenden Nullen (z\x20
. B. ).\Uxxxxxxxx
für einen Unicode-Zeichen-Hex-Wert (längere Form zum Generieren von Ersatzzeichen erforderlich).quelle
Es kann auch nützlich sein
String.Format
, zquelle
quelle
Es gibt verschiedene Möglichkeiten, dies zu tun. Am einfachsten ist die Verwendung
\t
in Ihrem Text. Es ist jedoch möglich, dass\t
dies in bestimmten Situationen nicht funktioniert, z. B. beimPdfReport
Nuget-Paket.quelle
\t
dies nicht funktioniert. ;)Mit
Microsoft Winform controls
ist es unmöglich, Ihr Problem richtig zu lösen, ohne eine kleine Problemumgehung, die ich unten erläutern werde.PROBLEM
Das Problem bei der einfachen Verwendung
"\t"
odervbTab
besteht darin, dass, wenn mehr als eine TextBox angezeigt wird und diese Ausrichtung für alle TextBox eingehalten werden muss, die EINZIGE"\t"
odervbTab
Lösung etwas anzeigt, das NICHT IMMER korrekt ausgerichtet ist.Beispiel in VB.Net:
wird angezeigt
Wie Sie sehen können, wird der
age
Wert fürFrançois-Victor
nach rechts verschoben und nicht mit demage
Wert von zwei anderen Textfeldern ausgerichtet.LÖSUNG
Um dieses Problem zu lösen, müssen Sie die Position der Registerkarten mithilfe einer bestimmten
SendMessage()
API-Funktion user32.dll festlegen (siehe unten).Das folgende Formular wird angezeigt
Sie können jetzt sehen, dass alle Werte korrekt ausgerichtet sind :-)
BEMERKUNGEN
Multiline
Die Eigenschaft der TextBox muss auf True gesetzt sein . Wenn diese Eigenschaft auf False gesetzt ist, wird die Registerkarte wie zuvor positioniert.Wie die
AcceptsTab
Eigenschaft zugewiesen wird, ist nicht wichtig (ich habe getestet).Diese Frage wurde bereits in StackOverflow behandelt
Achtung: Die Messeinheit für die Tabulatorposition ist kein Zeichen, sondern etwas, das 1/4 des Zeichens zu sein scheint. Deshalb multipliziere ich die Länge mit 4.
C # LÖSUNG
quelle
Dies funktioniert gut, aber Sie müssen eine Schriftart mit einem Abstand haben.
quelle
Bei Verwendung von Literalzeichenfolgen (beginnen Sie mit @ ") ist dies möglicherweise einfacher
Würde dazu führen
Apple:<tab>Bob
quelle
Zusätzlich zu den obigen Antworten können Sie PadLeft oder PadRight verwenden:
Dadurch wird die Zeichenfolge mit Leerzeichen links oder rechts gefüllt.
quelle