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
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ą.
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.
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.
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ż
.NET Desktop feedback