Laden...

label1.Text und +=

Erstellt von LittleTester vor 2 Jahren Letzter Beitrag vor 2 Jahren 294 Views
L
LittleTester Themenstarter:in
158 Beiträge seit 2019
vor 2 Jahren
label1.Text und +=

Ich gehe vorsorglich schonmal in Deckung, aber ich habe ein ganz dämliches Problem.
Wenn ich die Drucker wie folgt auslese, dann funktioniert das super:


foreach (string printer in System.Drawing.Printing.PrinterSettings.InstalledPrinters)
{
    label1.Text += printer + "\n";
}

Nur leider steht vor dem ersten Drucker das "label1.Text". Wie bekomme ich das weg?

IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6

T
2.219 Beiträge seit 2008
vor 2 Jahren

Im einfachsten Fall kannst du das auch auf eine Zeile mit String.Join umschreiben.


label1.Text = String.Join('\n', System.Drawing.Printing.PrinterSettings.InstalledPrinters);

T-Virus

Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.

16.807 Beiträge seit 2008
vor 2 Jahren

Grundlagen C# 🙂
Beim ersten Durchlauf ist Text null, damit wird beim ersten Concat ToString des Objekts (hier Label) aufgerufen, das den Instanz-Name liefert.
Lösung: Text vorher auf "" setzen.

Kann man übrigens auch super easy via Debugger raus finden.
[Artikel] Debugger: Wie verwende ich den von Visual Studio?

L
LittleTester Themenstarter:in
158 Beiträge seit 2019
vor 2 Jahren

Danke Abt. Jetzt wo du es schreibst...

Ich habe in eine komplett andere Richtung gedacht und gesucht, nämlich entweder nach einer Einstellung für das Label (Visible brachte nichts) oder einen Befehl.
Das war definitiv "zu einfach", weil "zu kompliziert" gedacht.

Aber wenn ich jetzt eh schon dabei bin mich zu blamieren: Gibt es eine Möglichkeit alle Labels die "label1" heißen auf "" zu setzen? Ich meine das was man bei "Text" einträgt, nicht bei "(Name)".

IDE: Visual Studio 2022
Sofern nicht anders genannt basieren meine Projekte auf C# und .net 6

J
61 Beiträge seit 2020
vor 2 Jahren

Aber wenn ich jetzt eh schon dabei bin mich zu blamieren: Gibt es eine Möglichkeit alle Labels die "label1" heißen auf "" zu setzen? Ich meine das was man bei "Text" einträgt, nicht bei "(Name)".

Was soll der Sinn sein?

Füge noch ein Label in das Formular und es wird automatisch „label2“ heißen. Und dann möchtest du das ganze auch für „label2“ haben.

Und wenn man gut lesbaren, selbsterklärenden Code hat, dann hat man kein „label1“ oder „label2“, sondern z.B. „printerNamesLabel“.

Deine Liste wird so länger und länger.

Eigentlich musst du nur vor der Schleife den Text des Labels auf string.Empty setzen.

16.807 Beiträge seit 2008
vor 2 Jahren

Aber wenn ich jetzt eh schon dabei bin mich zu blamieren: Gibt es eine Möglichkeit alle Labels die "label1" heißen auf "" zu setzen? Ich meine das was man bei "Text" einträgt, nicht bei "(Name)".

Fällt unter [FAQ] Variablennamen zur Laufzeit zusammensetzen / Dynamisches Erzeugen von Controls

Im Endeffekt hast Du eine Vielzahl von Problemen und Folgeprobleme, die nur existieren, weil Du etwas bzw. "sehr" unstrukturiert vorgehst.