Gewusst wie: Deaktivieren von Registerkarten
Aktualisiert: November 2007
Unter Umständen möchten Sie den Zugriff auf Daten beschränken, die innerhalb der Windows Forms-Anwendung verfügbar sind. Wenn beispielsweise Daten in den Registerkarten von einem Registersteuerelement angezeigt werden, können Sie Administratoren den Zugriff auf Informationen einer Registerkarte ermöglichen, während Gäste oder Benutzer mit eingeschränkten Rechten keinen Zugriff darauf haben.
So deaktivieren Sie Registerkarten programmgesteuert
Schreiben Sie Code, um das SelectedIndexChanged-Ereignis des Tab-Steuerelements zu behandeln. Dieses Ereignis wird ausgelöst, wenn der Benutzer von einer Registerkarte zur nächsten wechselt.
Überprüfen Sie die Anmeldeinformationen. Entsprechend den angegebenen Informationen können Sie den Benutzernamen, unter dem sich der Benutzer angemeldet hat, bzw. andere Anmeldeinformationen überprüfen, bevor Sie dem Benutzer das Anzeigen der Registerkarte gestatten.
Wenn der Benutzer über die entsprechenden Anmeldeinformationen verfügt, zeigen Sie die Registerkarte an, auf die geklickt wurde. Wenn Benutzer nicht über die erforderlichen Anmeldeinformationen verfügen, zeigen Sie ein Meldungsfeld oder eine andere Benutzeroberfläche an, um darauf hinzuweisen, dass die erforderlichen Zugriffsrechte nicht vorhanden sind. Legen Sie für die Enabled-Eigenschaft der betreffenden Registerkarte false fest.
Hinweis:
Wenn Sie diese Funktionalität in Produktionsanwendungen implementieren, können Sie die Überprüfung der Anmeldeinformationen während des Load-Ereignisses des Formulars durchführen. Dies ermöglicht Ihnen, die Registerkarte vor dem Anzeigen einer beliebigen Benutzeroberfläche zu deaktivieren und damit eine äußerst saubere Programmierung durchzuführen. Die im Folgenden verwendete Methodik (Überprüfen von Anmeldeinformationen und Deaktivieren der Registerkarte während des SelectedIndexChanged-Ereignisses) dient zur Veranschaulichung.
Wenn es sich um mehr als zwei Registerkarten handelt, zeigen Sie optional eine von der ursprünglichen Registerkarte abweichende Registerkarte an.
Im folgenden Beispiel wird anstelle der Überprüfung der Anmeldeinformationen ein CheckBox-Steuerelement verwendet, da die Kriterien für den Zugriff auf die Registerkarte je nach Anwendung variieren. Wenn die Überprüfung der Anmeldeinformationen bei Auslösung des SelectedIndexChanged-Ereignisses true zurückgibt (d. h., das Kontrollkästchen aktiviert ist) und die ausgewählte Registerkarte TabPage2 ist (in diesem Beispiel die Registerkarte mit den vertraulichen Informationen), wird TabPage2 angezeigt. Andernfalls wird TabPage3 angezeigt. Die Benutzer sehen ein Meldungsfeld, das darauf hinweist, dass sie nicht über die erforderlichen Zugriffsrechte verfügen. Im folgenden Code wird ein Formular mit einem CheckBox-Steuerelement (CredentialCheck) und einem TabControl-Steuerelement mit drei Registerkarten vorausgesetzt.
Private Sub TabControl1_SelectedIndexChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles TabControl1.SelectedIndexChanged ' Check Credentials Here If CredentialCheck.Checked = True And _ TabControl1.SelectedTab Is TabPage2 Then TabControl1.SelectedTab = TabPage2 ElseIf CredentialCheck.Checked = False _ And TabControl1.SelectedTab Is TabPage2 Then MessageBox.Show _ ("Unable to load tab. You have insufficient access privileges.") TabControl1.SelectedTab = TabPage3 End If End Sub
private void tabControl1_SelectedIndexChanged(object sender, System.EventArgs e) { // Check Credentials Here if ((CredentialCheck.Checked = true) & (tabControl1.SelectedTab == tabPage2)) { tabControl1.SelectedTab = tabPage2; } else if ((CredentialCheck.Checked = false) & (tabControl1.SelectedTab == tabPage2)) { MessageBox.Show("Unable to load tab. You have insufficient access privileges."); tabControl1.SelectedTab = tabPage3; } }
private: System::Void tabControl1_SelectedIndexChanged( System::Object ^ sender, System::EventArgs ^ e) { // Check Credentials Here if ((CredentialCheck->Checked == true) & (tabControl1->SelectedTab == tabPage2)) { tabControl1->SelectedTab = tabPage2; } else if ((CredentialCheck->Checked == false) & (tabControl1->SelectedTab == tabPage2)) { MessageBox::Show(String::Concat("Unable to load tab. ", "You have insufficient access privileges.")); tabControl1->SelectedTab = tabPage3; } }
(Visual C#, Visual C++) Fügen Sie den folgenden Code im Konstruktor des Formulars ein, um den Ereignishandler zu registrieren.
this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
this->tabControl1->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::tabControl1_SelectedIndexChanged);
Siehe auch
Aufgaben
Gewusst wie: Hinzufügen eines Steuerelements zu einer Registerkarte
Gewusst wie: Ändern der Darstellung der TabControl-Komponente in Windows Forms