Laden...

Item Eventcheck beginnt Falsch

4 Antworten
1,268 Aufrufe
Letzter Beitrag: vor 17 Jahren
Item Eventcheck beginnt Falsch

So hallo da bin ich wieder, mit meinen Problemen.

Also folgendes ich habe eine Checklistbox für die ich den event Itemcheck abfange.
Soweit so gut.
Wenn ich jetzt auf ein Item der Checkbox klicke beginnt er damit zu behaupten das das erste Item unchecked ist und überspringt die If-Schleife, geht aber beim 2. Item das ja noch nicht gecheckt ist korrekt rein und handelt es ab.
Wenn ich jetzt das 2. Item Checke erkennt er den Check der noch im ersten Item ist korrekt.

Hatte auch schon mit


if(e.NewValue == CheckState.Unchecked)...


versucht aber geht nicht, und das bringt eh nix wenn mehrere Items in der Box sind und manche checked sind und manche nicht.
beim Debuggen zeigt mir aber e.NewValue sehr schön, das er denkt das Kästchen wäre unchecked 🙂


 private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
        {

            int x = points;

         
           


                if (checkedListBox1.GetItemChecked(0) == true)
                {

                    this.dataGridView1.Rows[0].Cells["Points"].Value = x + equip1;
                    x += equip1;
                }
         

Hab auch die Checkedlistbox nach dem befüllen durch eine Schleife laufen lassen , die alles unchecked, aber das hat auch nichts gebracht. Hab jetzt zig Stunden meines kostbaren Lebens an dieser Funktion vergeudet 🙂

Vielleicht wird der event beim ersten click schneller durchlaufen als er das check erkennt ?(

Hm 🙂 hab es jetzt selbst rausgefunden. Zumindest eine Lösung. Ich gehe mit selectedIndex in die die Bedingung.


  int x = Convert.ToInt32(this.dataGridView1.Rows[0].Cells["Points"].Value);

            //1.Equipment option



            if (checkedListBox1.SelectedIndex==0)
            {

                if (checkedListBox1.GetItemCheckState(0) == CheckState.Unchecked)
                {

                    this.dataGridView1.Rows[0].Cells["Points"].Value = x + equip0;
                    x += equip1;
                }
                else
                {

                    this.dataGridView1.Rows[0].Cells["Points"].Value = x - equip0;
                    x += equip1;
                }

            }
            if (checkedListBox1.SelectedIndex == 1)
            {

                if (checkedListBox1.GetItemCheckState(1) == CheckState.Unchecked)
                {

                    this.dataGridView1.Rows[0].Cells["Points"].Value = x + equip1;
                    x += equip1;
                }
                else
                {

                    this.dataGridView1.Rows[0].Cells["Points"].Value = x - equip1;
                    x += equip1;
                }

            }
             

😁
Aber jetzt vielleicht eine andere Frage.

ich habe mehre int variabeln namens equip0, equip1....

int equip0 = 3; z. Bsp.

und im Grunde ändert sich in jeder if funktion genau nur der index den ich .GetItemCheckState() mitgebe und die zahle an equip,die aber beide identisch sind bei jedem item. Kann ich equip0 irgendwie zusammen setzten, also equip +0. Das ich alles durch eine schleife laufen lassen kann, ich hab sehr viele Items in der Box.
Ein Stichwort dazu würde mir genügen 🙂 falls das geht.

Ok danke 😁

Ich werd ein Array nehmen, das wird reichen denke ich.