Befehle mit for schleife verändern



  • Hallo,
    ich benutze microsoft visual 2008 und programmiere eine windowsapplication

    ich habe 8 listboxen in denen werte von 1-100 stehen müssen. damit ich die nicht von hand eintragen muss möchte ich das gerne programmtechnisch machen.

    mit listbox1.Items.Add("1")
    füge ich ja werte hinzu

    mit

    for( int i = 1; i <101; i++)
    {
    listbox1.Items.add(i)
    }

    kann ich ja eine box ausfüllen

    aber gibt es ne möglichkeit mit einer weiteren for schleife auch die anderen listboxen gleichzeitig auszufüllen ?

    also primitiv gesagt so :

    [code="cs"]

    for( int j = 1; j <9; j++)
    {
    for( int i = 1; i <101; i++)
    {
    listboxJ.Items.add(i)
    }
    }

    das es so nicht geht weiß ich 😉 aber gibt es eine möglichkeit nicht 8 forschleifen machen zu müssen ?

    vieln dank

    Truste



  • Mach doch einfach ein Array/List oder sowas.

    Hier ein Beispiel (Pseudocode!):

    Array<ListBox> listboxes = new Array<ListBox>();
    
    listboxes.Add(Listbox1);
    listboxes.Add(Listbox2);
    // ...
    
    foreach (ListBox listbox in listboxes)
     for (int i = 0; i < 100; ++i)
      listbox.Items.Add(i + 1);
    


  • Danke für die Schnelle antwort

    ich befürchte das meine schulkenntnisse für das nicht ausreichen 😉

    ich weiß das man mit

    int [] NAME = new int [10];
    

    ein Array erstellt mit 10 slots

    kannst du mit die erste zeile erklären ?

    ich weiß das "Listbox" eine classe ist

    was macht der befehl genau also schritt für schritt.

    und warum gibt mein visual einen fehler aus wenn ich es starten möchte

    "Fehler 1 Typ "System.Array" ist nicht generisch und kann daher nicht mit Typargumenten verwendet werden. "

    ich lerne gerade für meine abschlussprüfung und ich weiß das wir mehrere listboxen benutzen werden. Unser lehrer gibt gerne zusatzpunkte wenn man sachen kann die man im unterricht nicht gelernt hat 😉

    Truste



  • Ich hab ne lösung gefunden die auch ziemlich elegant aussieht wie ich finde 😉

    int j = 0;
                string[] Werte = new string[100];
                for (int i = 1; i < 101; i++)
    			{
                    Werte[j] = i.ToString();
                    j++;
    			}
                listBox2.Items.AddRange(Werte);
                listBox3.Items.AddRange(Werte);
                listBox4.Items.AddRange(Werte);
                listBox5.Items.AddRange(Werte);
                listBox6.Items.AddRange(Werte);
                listBox7.Items.AddRange(Werte);
                listBox8.Items.AddRange(Werte);
                listBox9.Items.AddRange(Werte);
    

    danke nochmal

    Truste



  • Hallo,

    es muß

    List<ListBox> listboxes = new List<ListBox>();
    

    heißen (bezogen auf den Code mit Array<ListBox>).
    Aber wenn ihr noch keine generischen Container gelernt habt, dann kannst du auch alternativ

    ListBox[] listboxes = new ListBox[10];
    

    benutzen.



  • danke
    das werd ich nachher mal ausprobieren ..

    jetzt hab ich noch ein weiteres problem und ich weiß da wir das schonmal gelößt hatten in der schule frage ist nur wie war das nochmal ...

    ich muss arrys und variablen Global nutzen

    bsp

    private void button1_Click(object sender, EventArgs e)
            {
             test1 = 5;
             string test2[] = new string[10];
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
             messageBox.show(test1);
            }
    

    ist nur ein beispiel
    ich muss also arrays und variablen beim ersten button click erstellen und beim 2. ausgeben.

    irgendwas war da mit global .. aber genau weiß ichs nemmer 😢

    weiß das jmd ?

    danke

    Truste



  • hat sich erledigt ich hab die vriablen einfach schon im vorfeld erstellt dann gehts

    danke trotzden



  • So? 🙂

    ListBox[] listboxes = new ListBpx[8];
    for(int i = 0; i < listboxes.Length; i++)
    {
    	listboxes[i] = new ListBox();
    	for(int ii = 0; ii < 100; ii++)
    	{
    		listboxes[i].Add(ii);
    	}
    }
    //vergiss das Controls.AddRange(listboxes); nicht
    

Log in to reply