Vorgehensweise: Deaktivieren von Registerkartenseiten

Manchmal kann es wünschenswert sein, den Zugriff auf Daten einzuschränken, die in Ihrer Windows Forms-Anwendung verfügbar sind. Ein Beispiel hierfür wäre, wenn Daten auf den Registerkartenseiten eines Registersteuerelements angezeigt werden, aber Informationen für Administratoren auf der Registerkartenseite nicht für Gastbenutzer oder Benutzer mit geringeren Berechtigungen sichtbar sein sollen.

So deaktivieren Sie Registerkartenseiten programmgesteuert

  1. Schreiben Sie Code zum Behandeln des SelectedIndexChanged-Ereignisses des Registersteuerelements. Dieses Ereignis wird ausgelöst, wenn der Benutzer von einer Registerkarte zum nächsten wechselt.

  2. Überprüfen Sie die Anmeldeinformationen. Abhängig von den dargestellten Informationen kann es wünschenswert sein, den Benutzernamen, mit dem sich der Benutzer angemeldet hat, oder eine andere Form von Anmeldeinformationen zu überprüfen, bevor der Benutzer die Registerkarte anzeigen kann.

  3. Wenn der Benutzer über zulässige Anmeldeinformationen verfügt, wird die Registerkarte angezeigt, auf die geklickt wurde. Wenn der Benutzer über keine zulässigen Anmeldeinformationen verfügt, wird ein Meldungsfeld oder eine andere Benutzeroberfläche mit dem Hinweis angezeigt, dass kein Zugriff erlaubt ist, und wieder die erste Registerkarte angezeigt.

    Hinweis

    Bei Implementierung diese Funktionalität in Ihren Produktionsanwendungen können Sie die Überprüfung der Anmeldeinformationen durchführen, wenn das Load-Ereignis des Formulars auftritt. So können Sie die Registerkarte ausblenden, bevor eine Benutzeroberfläche angezeigt wird, was eine viel sauberere Programmierung ermöglicht. Die nachstehend verwendete Methodik (Überprüfen von Anmeldeinformationen und Deaktivieren der Registerkarte, wenn das SelectedIndexChanged-Ereignis auftritt) dient lediglich zur Veranschaulichung.

  4. Wenn mehr als zwei Registerkartenseiten vorhanden sind, können Sie ggf. eine andere Registerkartenseite als die ursprüngliche anzeigen.

    Im folgenden Beispiel wird ein CheckBox-Steuerelement anstelle der Überprüfung der Anmeldeinformationen verwendet, da die Kriterien für den Zugriff auf die Registerkarte je nach Anwendung variieren. Wenn bei der Auslösung des SelectedIndexChanged-Ereignisses eine Überprüfung der Anmeldeinformationen durchgeführt wird (das heißt, das Kontrollkästchen ist aktiviert) und die Registerkarte TabPage2 ausgewählt ist (die Registerkarte mit den vertraulichen Informationen in diesem Beispiel), wird TabPage2 angezeigt. Andernfalls wird TabPage3 und ein Meldungsfeld mit dem Hinweis angezeigt, dass der Benutzer nicht über die entsprechenden Zugriffsberechtigungen verfügt. Der folgende Code setzt ein Formular mit einem CheckBox-Steuerelement (CredentialCheck) und einem TabControl-Steuerelement mit drei Registerkartenseiten voraus.

    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# und Visual C++) Fügen Sie folgenden Code in den 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);  
    

Weitere Informationen