Laden...

Ausrufezeichen am Ende des Strings wird in Label am Anfang ausgegeben

Erstellt von DangerNME vor 13 Jahren Letzter Beitrag vor 13 Jahren 3.414 Views
D
DangerNME Themenstarter:in
3 Beiträge seit 2011
vor 13 Jahren
Ausrufezeichen am Ende des Strings wird in Label am Anfang ausgegeben

Hi,

ich bin neu hier und hab zu meiner Frage noch keine existierende Beiträge gefunden. Ich hab folgendes Problem:
Ich möchte folgendes mit Windows Forms auf einem Label anzeigen lassen:

int max = 5;

label1.Text = "Das Maximum ist " + max.ToString() + " !";

das funktioniert ganz gut. aber wenn ich es ausgeben lasse steht im Label:

"!Das Maximum ist 5"

wieso steht das "!" am Anfang und nicht am Ende??
wenn ich es im source code an den Anfang stelle kommt es richtig heraus.
Ich hab das Problem zwar so gelöst, aber ich verstehe die Logik dahinter nicht!
Wenn beispielsweise eine "a", anstatt eines "!" an das Ende des String hinhänge klappt es auch korrekt und Problemlos.

ich verwende Visual Studio 2010 Ultimate

Danke schon mal im Voraus

1.044 Beiträge seit 2008
vor 13 Jahren

Hallo DangerNME,

das ist komsich. Ich kann mir selber nicht erklären, warum das so bei dir ist. Hast du sonst noch anderen Code, der auf label1.Text zugreift und eventuell was am Text von label1 verändern könnte? Normal ist das nicht.

Verwende lieber die string.Format-Methode. Siehe auch: StringBuilder.

zero_x

D
DangerNME Themenstarter:in
3 Beiträge seit 2011
vor 13 Jahren

Hallo zero_x

Danke für die prompte Antwort.
Nein, sonst greift nichts auf das Label zu. Wenn ich den String über die Console oder eine Textbox ausgeben lasse ist auch alle korrekt.
Dann werde ich es mal mit string.Format versuchen.

Den Code habe ich übrigens aus dem Buch Visual c# 2010 Grundlagen und Profiwissen. Da kommt der exakt so vor wie ich ihn hier vorliegen hab.

5.299 Beiträge seit 2008
vor 13 Jahren

das ist vmtl. die Einstellung Label.RightToLeft=true

Der frühe Apfel fängt den Wurm.

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo ErfinderDesRades,

in dem Fall müsste aber der gesamte String rückwärts dargestellt werden, oder?

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

5.299 Beiträge seit 2008
vor 13 Jahren

probiers aus.

Der frühe Apfel fängt den Wurm.

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo ErfinderDesRades,

zugegebenermaßen war ich gerade echt baff – es lag wirklich an Label.RightToLeft!
Und nein, es wurde nicht der gesamte String rückwärts dargestellt. Hat jemand dafür eine logische Begründung?

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

5.299 Beiträge seit 2008
vor 13 Jahren

k.A. Ich nehme an, in anderen Kulturen, arabisch oder was, kann das sinnvoll sein.

Der frühe Apfel fängt den Wurm.

6.862 Beiträge seit 2003
vor 13 Jahren

Hallo,

Hat jemand dafür eine logische Begründung?

Ist so wie es sein soll.
Wenn RightToLeft eingestellt ist, werden Zeichen in denen als Schreibrichtung rechts nach links eingestellt ist auch so geschrieben(arabische Zeichen kamen ja schon als Beispiel). Lateinische Buchstaben wie wir sie verwenden, werden in einem Wort immer von links nach rechts geschrieben, auch wenn rechts nach links eingetragen ist. Im Unicode Standard ist jedem Zeichen eine Schreibrichtung zugeordnet, bzw. gibts auch Zeichen ohne Schreibrichtung die sich dann nach den umgebenen Zeichen richten. Satzzeichen wie das ! haben keine Schreibrichtung, also werden sie bei Rechts nach Links natürlich logischerweise links angehangen und nicht rechts.

Baka wa shinanakya naoranai.

Mein XING Profil.

1.002 Beiträge seit 2007
vor 13 Jahren

Hallo talla,

danke für die Erklärung — im ersten Moment ist das implementierte Verhalten so nicht intuitiv.

m0rius

Mein Blog: blog.mariusschulz.com
Hochwertige Malerarbeiten in Magdeburg und Umgebung: M'Decor, Ihr Maler für Magdeburg

D
DangerNME Themenstarter:in
3 Beiträge seit 2011
vor 13 Jahren

Ich bin ja nur froh, dass ich nicht verrückt bin 😉

Vielen Dank an alle es hat funktioniert. Ist aber echt eine unintuitive einstellung.