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?
Antworten
Zu viele Anzeigen?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 ).
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.
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.
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.