HOWTO · Csharp
Schaltflächen in C# deaktivieren und aktivieren
In diesem Leitfaden werden wir sehen, wie wir die Schaltflächen in C# deaktivieren und aktivieren können.
Auf dieser Seite
Um eine Schaltfläche in einer Windows Forms-Anwendung zu deaktivieren, setzen Sie ihre Eigenschaft Enabled auf false. Mit true machen Sie sie wieder verfügbar. Welche Eigenschaft gilt, hängt vom UI-Framework ab: WPF verwendet IsEnabled, während Windows Forms und ASP.NET Web Forms Enabled verwenden. (C#)
Was die Eigenschaft für den Schaltflächenstatus bewirkt
Eine aktivierte Schaltfläche kann Benutzereingaben entgegennehmen und ihre Aktion ausführen. Wenn Sie sie deaktivieren, kann der Benutzer sie nicht mehr über die Benutzeroberfläche betätigen; Frameworks stellen diesen Zustand üblicherweise auch visuell dar. Eine Schaltfläche ist standardmäßig aktiviert, sofern die Anwendung, der Designer oder das Markup keinen anderen Anfangswert festlegt. Das Deaktivieren eines Steuerelements verändert das Verhalten der Benutzeroberfläche. Es ersetzt weder die Berechtigungsprüfung noch die Validierung von Daten in der Operation, die eine Anfrage verarbeitet.
Eine Windows Forms-Schaltfläche erstellen oder auswählen
Fügen Sie im Windows Forms-Designer über die Toolbox eine Button-Schaltfläche hinzu und setzen Sie ihre Eigenschaft (Name) auf myButton. Das im Designer erstellte Steuerelement steht dem Formularkode zur Verfügung, sodass Ereignishandler es aktualisieren können. Sie können eine Button-Schaltfläche auch im Code erstellen und dem Formular hinzufügen. ButtonBase ist ein Basistyp und nicht das konkrete Steuerelement, das normalerweise für eine Schaltfläche verwendet wird.
Eine Windows Forms-Schaltfläche deaktivieren und wieder aktivieren
Platzieren Sie den Code zur Zustandsänderung in der Formularklasse, in der myButton verfügbar ist. Dieses Beispiel für Windows Forms setzt voraus, dass der Designer myButton und eine separate Schaltfläche resetButton auf demselben Formular erstellt hat. Fügen Sie diese Handler in die Formularklasse ein und verbinden Sie dann im Ereignisse-Fenster des Designers myButton.Click mit DisableButton_Click und resetButton.Click mit EnableButton_Click (oder verwenden Sie nach InitializeComponent() die Anweisungen myButton.Click += DisableButton_Click; und resetButton.Click += EnableButton_Click;): private void DisableButton_Click(object sender, EventArgs e) { myButton.Enabled = false; } und private void EnableButton_Click(object sender, EventArgs e) { myButton.Enabled = true; }. Ein Klick auf die erste Schaltfläche deaktiviert genau diese Schaltfläche; ein Klick auf die separate Zurücksetzen-Schaltfläche aktiviert sie wieder. Diese Handler-Ausschnitte gelten speziell für Windows Forms und sind keine eigenständigen Programme.
Das folgende eigenständige Konsolenbeispiel veranschaulicht lediglich die Zustandsänderung. Es erstellt kein Windows Forms-Steuerelement; die Ausgabe zeigt den booleschen Zustand vor und nach den Zuweisungen. Verwenden Sie die obigen Zuweisungen an Button.Enabled in einem Windows Forms-Formular.
Der Code und die angezeigten Bezeichnungen oder Ausgaben in diesem Abschnitt bleiben auf Englisch.
using System;
class Program
{
static void Main()
{
bool submitButtonEnabled = true;
submitButtonEnabled = false;
Console.WriteLine($"Enabled: {submitButtonEnabled}");
submitButtonEnabled = true;
Console.WriteLine($"Enabled: {submitButtonEnabled}");
}
}
Enabled: False
Enabled: True
Den Schaltflächenstatus in Ereignishandlern und bei der Formularvalidierung verwenden
Ein häufiges Muster ist, eine Schaltfläche zum Absenden so lange nicht verfügbar zu machen, bis die erforderlichen Felder die Validierung bestehen. Wenn sich ein Feld ändert, validieren Sie die aktuellen Werte und setzen submitButton.Enabled auf das Ergebnis der Validierung. Setzen Sie die Eigenschaft in einem formularweiten Validierungshandler nur dann wieder auf true, wenn alle erforderlichen Prüfungen erfolgreich sind. Validieren Sie die Eingaben außerdem erneut, wenn Sie die Übermittlung verarbeiten: Der UI-Zustand hilft bei der Benutzerführung, sollte eine Operation aber nicht allein absichern. Bei einer länger laufenden Anfrage deaktivieren Sie die Schaltfläche zum Absenden während der Verarbeitung und aktivieren sie nach Abschluss wieder – auch bei Fehlern –, damit Benutzer es erneut versuchen können.
Frameworkspezifische Eigenschaftsnamen
Verwenden Sie die Eigenschaft, die zum jeweiligen Steuerelementtyp gehört: Windows Forms Button.Enabled, WPF Button.IsEnabled und ASP.NET Web Forms Button.Enabled. In WPF kann IsEnabled auch an einen ViewModel-Wert gebunden werden, sodass die Benutzeroberfläche dem Anwendungszustand folgt. Die serverseitige Eigenschaft Enabled eines ASP.NET-Web-Forms-Steuerelements steuert das gerenderte Serversteuerelement. Sie ist keine Sicherheitsprüfung, und ein Benutzer kann einen clientseitig deaktivierten Zustand ändern. Diese Ausschnitte beschreiben Framework-APIs und sind keine eigenständigen Programme.
Häufige Fehler und Prüfungen beim Schaltflächenstatus
- Prüfen Sie Framework und Steuerelementtyp, bevor Sie
EnabledoderIsEnabledauswählen. - Vergewissern Sie sich, dass der Handler mit dem erwarteten
Click- oder Validierungsereignis verbunden ist und sich der Code auf die gewünschte Schaltflächeninstanz bezieht. - Wenn eine Schaltfläche deaktiviert bleibt, verfolgen Sie alle Zuweisungen an ihre Statuseigenschaft und prüfen Sie, ob die Validierungsbedingung überhaupt wahr werden kann.
- Sorgen Sie für eine weitere Möglichkeit, eine Schaltfläche wieder zu aktivieren, die durch ihren eigenen Klick-Handler deaktiviert wurde, etwa nach Abschluss einer Aufgabe oder über eine separate Abbrechen-/Zurücksetzen-Aktion.
- Prüfen Sie Berechtigungen und validieren Sie übermittelte Werte in der Operation selbst. Ein deaktiviertes Erscheinungsbild allein schützt die Operation nicht.