C# Labels mit Label Array erstellen

  • C#

Es gibt 12 Antworten in diesem Thema. Der letzte Beitrag () ist von MyHomie.

    C# Labels mit Label Array erstellen

    Hallo Community,

    ich stehe vor folgendem Problem:

    Ich habe ein Array erstellt der Größe 10. Nun sollen mithilfe dieses Arrays und einer For-Schleife mehrere Labels erstellt werden.
    Die beiden Variablen lblH und lblB sind zur sicheren Verschiebung der Labels gedacht.

    Mein Code ist bisher so:

    C#-Quellcode

    1. Label[] lbls = new Label[10];
    2. for (int i = 0; i < 10; i++)
    3. {
    4. //Instanz erzeugen
    5. lbls[i] = new Label();
    6. //Eigenschaften setzen u_ä.
    7. lbls[i].Text = "Hallo "+i;
    8. lbls[i].Location = new Point(lblH, lblB);
    9. lbls[i].Name = "Label" + i;
    10. //Label zur Form hinzufügen
    11. this.Controls.Add(lbls[i]);
    12. lblH = lblH + 10;
    13. lblB = lblB + 10;
    14. }


    Wenn ich das Programm nun starte entsteht genau 1 Label. Ich habe aus diesem Grund einen immer verändernden Text(Der Labels) erstellt jedoch sehe ich keine Änderung geschweige dem, dass ich mehr als 1 Label sehe.

    Ich hab auch schon einen Breakpoint gesetzt und auf alle Variablen eine Watch erstellt. So wie er das Programm Abhandelt müsste es funktionieren aber er erstellt keine weitern Labels mehr.


    Ich hoffe ihr versteht mein Problem und könnt mir helfen.

    Mit freundlichen Grüßen
    MyHomie



    Edit: Hier die Lösung zu dem Problem. Danke an RodFromGermany: Abstand der Labels Vergrößern.


    Dies ist weder ModernUI noch WPF -> verschoben in die sonstigen Problemstellungen
    -Artentus

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Artentus“ ()

    Vielleicht siehst du diese nicht, weil alle auf der selben Position sind?

    Edit: Das änderst du ja auch.. Lass dir mal mit System.Diagnostics.Debug.WriteLine() ausgeben, welche Items verfügbar sind.


    C#-Quellcode

    1. ​for (int i = 0; i < 10; i++)
    2. {
    3. //Instanz erzeugen
    4. lbls[i] = new Label();
    5. //Eigenschaften setzen u_ä.
    6. lbls[i].Text = "Hallo "+i;
    7. lbls[i].Location = new Point(lblH, lblB);
    8. lbls[i].Name = "Label" + i;
    9. //Label zur Form hinzufügen
    10. this.Controls.Add(lbls[i]);
    11. System.Diagnostics.Debug.WriteLine(lbls[i].Text);
    12. lblH = lblH + 10;
    13. lblB = lblB + 10;
    14. }
    @ThuCommix: Okay danke werde ich probieren

    @EaranMaleasi: Ja des hab ich mir irgendwie von früher noch eingeprägt. Einen Unterschied macht es ja nicht deswegen ist es egal.



    Edit1: Okay es sieht so aus wie es sein sollte: Hallo 0, Hallo 1, Hallo 2, .....

    Ich versuche jetzt des ganze mal noch mit den Locations zu machen und schau was dann raus kommt

    Edit 2: Locations getestet und Sie sind so wie ich es Programmiert hatte.
    Dann hab ich auch noch die beiden Eigenschaften: Visible und Enabled getestet. Alles auf True.



    Was kann ich machen????????

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MyHomie“ ()

    Warum sollte man sowas machen und Labels im Code erstellen?
    Das zeugt nicht gerade von guter Architektur. Was ist der Plan?
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:
    Mein Plan ist mehrere Labels zu erstellen und die dann zu einem 10 * 10 Feld für Schiffe versenken zu setzen.

    Ja ich weis es gibt viele verschiedene Ansätze so etwas zu erstellen und die meisten wahrscheinlich auch besser, jedoch ist dieses mal mein Plan es so zu machen
    @MyHomie Mach mal den Abstand größer.
    Und
    Nimm ein TableLayoutPanel.
    Bilder
    • Label.png

      29,15 kB, 681×371, 989 mal angesehen
    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 die Labels mit dem Array verbunden sind kann man sie schneller bzw. einfacher auslesen und überprüfen. Was in meinen Augen schneller geht.

    Edit1: Okay Problem gelöst Danke dir RodFromGermany. Hätte nicht gedacht, dass der Abstand in diesem Fall eine so Große Rolle spielt

    Edit 2:
    Nimm ein TableLayoutPanel

    Was ist der Unterschied zu einem Normalen Label? bzw. was für einen Nutzen habe ich davon?





    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „MyHomie“ ()

    MyHomie schrieb:

    Unterschied
    Panel <=> Label, da liegen Welten dazwischen.
    Ein TableLayoutPanel gestattet Dir, Deine Controls, z.B. Labels, in einem vorgegebenen Raster anzuordnen.
    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!