7 Stimmen

Winforms-Schaltfläche: Bedeutet Visible = false auch Enabled = false?

Eine einfache Frage: Ich habe eine WinForms-Schaltfläche und möchte sie sowohl (bedingt) unsichtbar als auch deaktiviert machen (um sicher zu sein, dass sie nicht aktiviert wird, wenn jemand in den Bereich klickt, in dem sich die unsichtbare Schaltfläche befindet). Ist button.Visible = false implizieren auch button.Enabled = false oder muss ich beide Eigenschaften zu gegebener Zeit einstellen/zurücksetzen?

1 Stimmen

Ich weiß, es gibt keine dummen/faulen Fragen, aber im Ernst, warum haben Sie es nicht einfach versucht? :/

2 Stimmen

Warum müssen Sie die Schaltfläche deaktivieren, wenn Sie sie ohnehin ausblenden? Deaktivieren Sie einfach die zugrundeliegende Funktionalität (indem Sie ein Flag testen oder wie auch immer Sie wissen, dass Sie die Schaltfläche deaktivieren sollten). Selbst wenn ein dummer Benutzer ein Tool verwendet, um die Schaltfläche wieder einzublenden oder eine Fenstermeldung an die unsichtbare, aber aktivierte Schaltfläche zu senden, wird Ihre Anwendung auf diese Weise nichts tun, was sie nicht tun sollte. Mit anderen Worten: Wenn Sie eine Funktion deaktivieren wollen, deaktivieren Sie die Funktion und nicht nur den Zugang zu ihr.

7voto

Michael Todd Punkte 16235

Wenn das Steuerelement nicht sichtbar ist, ist es effektiv deaktiviert. Wenn Sie in den Bereich klicken, in dem das Steuerelement sichtbar wäre (oder in diesen Bereich hinein- und herausrollen), wird kein Ereignis ausgelöst.

EDIT: Zur Klarstellung, basierend auf anderen Antworten und Kommentaren, ist die Schaltfläche no deaktiviert und die zugrunde liegende Ereignisfunktionalität ist weiterhin verfügbar programmatisch , aber die Schaltfläche ist im Formular nicht physisch verfügbar/sichtbar und der Benutzer kann nicht damit interagieren (es sei denn, Sie als Programmierer stellen eine andere Methode zur Verfügung programmatisch ).

2voto

Joel Coehoorn Punkte 377088

Die Einstellung Sichtbar auf false bewirkt no die Eigenschaft Aktiviert ändern. Wenn Sie die Eigenschaft auf false setzen, ist das Steuerelement jedoch tatsächlich nicht mehr vorhanden. Wenn Sie in den leeren Raum klicken, der von einer unsichtbaren Schaltfläche hinterlassen wird, wird das Klickereignis der Schaltfläche nicht ausgelöst.

1voto

James Punkte 77534

Ich glaube nicht, dass es bedeutet, dass es deaktiviert ist. Es bedeutet nur, dass das Steuerelement im Formular nicht sichtbar ist, so dass es keine Möglichkeit gibt, die Aktion darauf auszuführen. Wenn Sie die Eigenschaft visible auf false setzen und dann das Click-Ereignis durch Code aufrufen, wird es verarbeitet. Wenn Sie jedoch die Enabled-Eigenschaft auf False setzen, würde ich mir vorstellen, dass es nicht funktionieren würde.

1voto

guest Punkte 11

Ich bin mir ziemlich sicher, dass die Aktion "_Click" deaktiviert ist, wenn .Visible = false ist. Wenn Sie zum Beispiel .PerformClick() in Ihrem Code verwenden und .Visible = true ist, wird _Click ausgeführt. Wenn false, wird _Click nicht ausgeführt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X