Udostępnij za pośrednictwem


Instrukcje: wyłączanie stron kart

W niektórych przypadkach należy ograniczyć dostęp do danych dostępnych w aplikacji Windows Forms. Przykładem może być sytuacja, w której dane są wyświetlane na stronach zakładek kontrolki zakładki; administratorzy mogą mieć informacje na stronie zakładki, które chcesz ograniczyć dla gości lub użytkowników o niższym poziomie uprawnień.

Aby programowo wyłączyć karty zakładek

  1. Napisz kod do obsługi zdarzenia SelectedIndexChanged kontrolki zakładek. Jest to zdarzenie zgłaszane, gdy użytkownik przełącza się z jednej karty na następną.

  2. Sprawdź poświadczenia. W zależności od przedstawionych informacji możesz sprawdzić nazwę, pod którą zalogował się użytkownik, lub inną formę poświadczeń użytkownika przed zezwoleniem na wyświetlenie karty użytkownikowi.

  3. Jeśli użytkownik ma odpowiednie poświadczenia, wyświetl zakładkę, która została kliknięta. Jeśli użytkownik nie ma odpowiednich poświadczeń, wyświetl okno dialogowe lub inny interfejs użytkownika wskazujący, że nie ma dostępu, i wrócić do początkowej karty.

    Notatka

    Podczas implementowania tej funkcji w aplikacjach produkcyjnych można wykonać to sprawdzanie poświadczeń podczas zdarzenia formularza Load. Umożliwi to ukrycie karty przed pokazaniem dowolnego interfejsu użytkownika, co jest znacznie czystszym podejściem do programowania. Zastosowana poniżej metoda (sprawdzanie tożsamości i wyłączanie karty podczas zdarzenia SelectedIndexChanged) służy w celach poglądowych.

  4. Opcjonalnie, jeśli masz więcej niż dwie zakładki, wyświetl zakładkę inną niż oryginalna.

    W poniższym przykładzie kontrolka CheckBox jest używana zamiast sprawdzania poświadczeń, ponieważ kryteria dostępu do zakładki będą się różnić w zależności od aplikacji. Po wystąpieniu zdarzenia SelectedIndexChanged, jeśli weryfikacja poświadczeń jest pozytywna (oznacza to, że pole wyboru jest zaznaczone), a wybrana karta to TabPage2 (karta z poufnymi informacjami w tym przykładzie), wyświetla się TabPage2. W przeciwnym razie pojawi się TabPage3, a użytkownik zobaczy okno komunikatu informujące, że nie ma odpowiednich uprawnień dostępu. Poniższy kod zakłada formularz z kontrolką CheckBox (CredentialCheck) i kontrolką TabControl z trzema stronami tabulacji.

    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++) Umieść następujący kod w konstruktorze formularza, aby zarejestrować procedurę obsługi zdarzeń.

    this.tabControl1.SelectedIndexChanged +=
       new System.EventHandler(this.tabControl1_SelectedIndexChanged);  
    
    this->tabControl1->SelectedIndexChanged +=  
       gcnew System::EventHandler(this, &Form1::tabControl1_SelectedIndexChanged);  
    

Zobacz też