Mehrere TextBox Schriftfarben ändern / Code Optimierung

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Acr0most.

    Mehrere TextBox Schriftfarben ändern / Code Optimierung

    Moin die runde,
    angenommen man hat eine Form mit 10 TextBoxen in denen man die Schriftfarbe änder möchte. Dann könnte man

    textbox1.ForeColor = Color.Green;
    textbox2.ForeColor = Color.Red;
    ...
    textbox10.ForeColor = Color.Black;

    das geht natürlich, macht mich aber irgendwie nicht Glücklich ;) gibt es da ein Trick, wie man das Optimieren kann / Abkürzungen?

    Kann man eigentlich statt z.b. "Color.Black" auch eine Variable nutzen z.b. "textbox10.ForeColor = VariableFarbe;"?
    @Bluespide Das ist suboptimal, insbesondere, wenn mal Controls umbenannt werden. Pack die Controls lieber in ein Array:
    @Pardasus

    C#-Quellcode

    1. TextBox[] tb = { textBox1, textBox2, textBox3, textBox4, textBox5 };
    2. Color[] col = { Color.Red, Color.Green, Color.Blue, Color.Yellow, Color.Violet };
    3. for (int i = 0; i < tb.Length; i++)
    4. {
    5. tb[i].BackColor = col[i];
    6. }

    VB.NET-Quellcode

    1. Dim tb As TextBox() = {TextBox1, TextBox2, TextBox3, TextBox4, TextBox5}
    2. Dim col As Color() = {Color.Red, Color.Green, Color.Blue, Color.Yellow, Color.Violet}
    3. For i As Integer = 0 To tb.Length - 1
    4. tb(i).BackColor = col(i)
    5. Next
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Super! Vielen dank für die Antworten. Hätte nicht gedacht das es so einfach ist. Das bringt mich ein ganze stück weiter :)

    Color varcol = Color.Green; <- kann ich sowas auch von einer Klasse in die andere Übertragen bzw ein string ist dies ja nicht.

    @Dancger
    die 10 TextBoxen waren nur ein Beispiel, wie würde so etwas nur aussehen... nicht schön ;)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Pardasus“ ()

    Pardasus schrieb:

    Übertragen bzw ein string ist dies ja nicht.
    Ein String nicht, aber ein Color-Wert.
    Mach Dir einfach einen Color-Parameter in die betreffende Prozedur:

    VB.NET-Quellcode

    1. Private Sub Test(col As Color)
    2. MessageBos.Show(col.ToString())
    3. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Wenn du mit mehreren Farben arbeiten willst, kannst du bspw. auch mit Tags arbeiten.
    Liest diese Tags in einer For each schleife aus und Färbst je nach Tag die Textbox anders.
    Wenn das Leben wirklich nur aus Nullen und Einsen besteht, dann laufen sicherlich genügen Nullen frei herum. :D
    Signature-Move 8o
    kein Problem mit privaten Konversationen zu Thema XY :thumbup: