OnyWay Checkbox

MikeBi

Mitglied
Hallo,

ich habe eine CheckBox als Button erzeugt. Dieses Usercontrol hat eine Status-LED bekommen, außerdem soll diese LED schon angehen, wenn mann mit der Maus oder einem Button auf den Button klickt. Dieser Button soll vom Benutzer nur aktiviert werden können. Nur über Software soll das Checked zurück gesetzt werden können. Leider bekomme ich das nicht sauber gelöst. Die Checked Property wird erst beim loslassen gesetzt. Außerdem habe ich Proble die ganzen Ereignisse, um einen Button zu drücken danach zu unterdrücken. Ich weiß leider scheinbar gar nicht alle Möglichkeiten eine Checkbox zu deaktivieren (Click, DoubleClich, Space,...).
Hat schon mal jemand so etwas gemacht oder eine Idee, das sauber hinzubekommen ? Wie kann man im Paint-Ereigniss herausbekommen, ob der Button im Gedrückt-Zustand ist ?

Mike
 
Deaktivier doch die Checkbox einfach beim CheckedChange-Event:

Code:
    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
      ((CheckBox)sender).Enabled = false;
    }

Abfragen kannst du bei Paint einfach, indem du das sender Objekt in die entsprechende Klasse castest:

Code:
   private void checkBox1_Paint(object sender, PaintEventArgs e)
    {
      bool isChecked = ((CheckBox)sender).Checked;
    }
 
Hallo,

ich will die CheckBox nicht deaktivieren, weil sie sie dann eingegraut angezeigt wird. Außerdem wird das checked erst gesetzt, wenn man von der Taste herunter geht (Up-Event). Wenn also nur die Checkbox gedrückt wird, ist das checked noch false.
Ich habe jetzt herausgefunden, das es noch das Event onChange gibt, wo ich das CheckedChanged Event unterdrücken kann. Ich kriege es aber irgenwie trotzdem nicht hin. Wenn alle Mouse und Tastaturereignisse funktionieren, bekomme ich das Checked von außen nicht mehr zurück gesetzt. Dann habe ich auch diesen Weg blockiert.

Mike
 
ich will die CheckBox nicht deaktivieren, weil sie sie dann eingegraut angezeigt wird.

Ich hab aus der Frage nach dem Paint-Ereigniss angenommen, du würdest das Controll selbst zeichnen.

Außerdem wird das checked erst gesetzt, wenn man von der Taste herunter geht (Up-Event). Wenn also nur die Checkbox gedrückt wird, ist das checked noch false.

Dafür musst du ja nur bei den entsprechenden Events (MouseDown, KeyDown) die Checkbox manuell "Checked" setzen. CheckedChanged wird dann immer noch ausgelöst.



Aber so richtig versteh ich wahrscheinlich gar nicht was du da machst/machen möchtest. :confused:
 
Hallo,

so hatte ich es ja auch gelöst, nur leider hatte das den Nebeneffekt, das mehrfach das checked gesetzt und zurückgesetzt wurde (Ereignis wurde ausgelöst) obwohl nur einmal gedrückt wurde. Ich bin die Sache noch mal neu angegangen und habe eine Lösung gefunden. Ich habe es so gelöst, ds ich beim Down-Ereignis das Checked ändere und danach alle Checked Änderungen unterdrücke. Erst beim Up-Ereignis und Leave wird die Sperre wieder aufgehoben. Ich hoffe mal, das funktioniert zuverlässig.
Danke für die Ideen.

Mike
 
Zurück