Suche Möglichkeit

Trivalik

Mitglied
Ich habe eine CheckedListBox aus Framwork 2.0.
Dort will ich immer eine Überprüfung vornehmen wenn die häckchen geändert werden. Doch habe ich noch kein Erreigniss gefunden das das macht, sondern nur in verfälschter form. Da egal ob bei Click oder ItemCheck es ist immer so das das zu letzt bediente häckchen noch nicht so gewertet wird wie ich es gesetzt habe sondern genau andersrum. Ihr braucht mir jetzt keine lösung geben die das eine häckchen negiert, das kann ich auch selbst, ich wollte nur fragen ob es möglich ist ohne tricks!

bzw anders gesagt immer wenn kein häckchen markiert ist soll etwas deaktiviert werden und immer wenn mindestens eines aktiviert ist soll etwas aktiviert werden.

Ich hoffe ihr helft mir.
 
Trivalik hat gesagt.:
Ich habe eine CheckedListBox aus Framwork 2.0.
Dort will ich immer eine Überprüfung vornehmen wenn die häckchen geändert werden. Doch habe ich noch kein Erreigniss gefunden das das macht, sondern nur in verfälschter form. Da egal ob bei Click oder ItemCheck es ist immer so das das zu letzt bediente häckchen noch nicht so gewertet wird wie ich es gesetzt habe sondern genau andersrum. Ihr braucht mir jetzt keine lösung geben die das eine häckchen negiert, das kann ich auch selbst, ich wollte nur fragen ob es möglich ist ohne tricks!

bzw anders gesagt immer wenn kein häckchen markiert ist soll etwas deaktiviert werden und immer wenn mindestens eines aktiviert ist soll etwas aktiviert werden.

Ich hoffe ihr helft mir.

Das Problem ist das du sobald du auf ein unchecked Checkbox klickst, um sie zu selektieren passiert der Event des Klickes *bevor* das Controll seinen Status ändert.
Sprich:

mouseClick
checkbox#checked == true

Soher gesehen ist es kein Trick dies zu handeln sondern normal. Was du eventuell mache könntest deine überprüfung auf checked oder nicht beim Event mouseLeave anzuhängen, dann sollte er den Wert nach dem Mouseklick zurückgeben.
 
Mit dem Click ereignis ist mir das schon klar. Gibt es wirklich kein Erreigniss das ausgelöst wird wenn der hacken schon drin ist?
 
Genau weiß ich's nicht, aber wenn nicht, dann bau dir doch eines:

Leite ein eigenes Control von der CheckedListBox ab und überlade die Funktionen OnMouseDown (Check-Status setzen oder löschen) und OnMouseUp (benutzerdefiniertes Event "CheckChanged" auslösen).
 
Das würde aber nicht gehen da wenn mal einer auf die Idee kommt mit der Tastatur zu arbeiten werden diese Ereignisse gar nicht ausgelöst!
 
Tach !

Hab das Problem wahrscheinlich auch in ein paar Tagen.
Steht im ausgelösten Event keinerlei Detail über das was er getan hat ?
Da könnte man doch alle Events innerhalb der CheckedListBox abfangen und auf eine bestimmte Info hin untersuchen.

Geht das nicht was ?

MFG JJB

_
 
Doch bei ItemCheck kann man ja den sender festlegen, und den muss man dann eben negieren wenn er dran ist. Das ist so wie ich es immer gemacht habe. Aber das finde ich net toll, wenn ich den Code auf 2 verschiedene weisen schreibe, ich wollte eine Funktion die algemein gültig ist.
 
Hilft das ?

Code:
private void CheckedListBox_ItemCheck(object sender, System.Windows.Forms.ItemCheckEventArgs e)
      {
         // Was passiert
         MessageBox.Show("Index: " + e.Index + " wechselt von: " + e.CurrentValue + " zu: " + e.NewValue);
         
         // Wenn ich etwas machen möchte, nachdem gewechselt wurde
         while(CheckListBox.Items[e.Index] != e.NewValue)
            LoopDoingNothing();
         
         DoSomething();
      }

Und für die Sache mit der Tastatur... ich fange die Leertaste ab und man ist angewiesen, mit der Maus zu arbeiten.
Doch das ist eigentlich gar nicht nötig. Diese Funktion liest auch Tastatureingaben ein.
 
Zuletzt bearbeitet:
Zurück