Postupy: Zakázání stránek karet
V některých případech budete chtít omezit přístup k datům, která jsou k dispozici v aplikaci Windows Forms. Jedním z příkladů může být, když máte data zobrazená na stránkách záložek ovládacího prvku; správci mohou mít informace na stránkách záložek, které chcete omezit pro uživatele typu host nebo s nižšími oprávněními.
Zakázání záložek pomocí programového kódu
Napište kód pro zpracování události SelectedIndexChanged ovládacího prvku tab. Jedná se o událost, která se vyvolá, když uživatel přepne z jedné záložky na druhou.
Zkontrolujte přihlašovací údaje. V závislosti na zobrazených informacích možná budete chtít před povolením zobrazení karty uživateli zkontrolovat uživatelské jméno, s kterým se uživatel přihlásil, nebo jinou formu přihlašovacích údajů.
Pokud má uživatel příslušné přihlašovací údaje, zobrazte kartu, na kterou uživatel kliknul. Pokud uživatel nemá odpovídající přihlašovací údaje, zobrazte okno se zprávou nebo jiné uživatelské rozhraní, které indikuje, že nemá přístup, a vraťte se na úvodní kartu.
Poznámka
Při implementaci této funkce ve vašich produkčních aplikacích můžete tuto kontrolu přihlašovacích údajů provést během události Load formuláře. To vám umožní skrýt kartu před zobrazením uživatelského rozhraní, což je mnohem přehlednější přístup k programování. Metodologie použitá níže (ověření a zakázání záložky během události SelectedIndexChanged) slouží k ilustrativním účelům.
Máte-li více než dvě záložky, můžete zobrazit jinou než původní.
V následujícím příkladu se používá kontrola CheckBox namísto kontroly přihlašovacích údajů, protože kritéria pro přístup k záložce se budou lišit podle aplikace. Když je vyvolána událost SelectedIndexChanged, pokud je kontrola přihlašovacích údajů úspěšná (tj. je zaškrtnuté políčko) a vybraná karta je
TabPage2
(karta s důvěrnými informacemi v tomto příkladu), pak se zobrazíTabPage2
. V opačném případě se uživateli zobrazíTabPage3
a zobrazí se mu okno se zprávou, že nemá příslušná přístupová oprávnění. Následující kód předpokládá formulář s ovládacím prvku CheckBox (CredentialCheck
) a ovládacím prvku TabControl se třemi stránkami tabulátoru.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++) Do konstruktoru formuláře umístěte následující kód pro registraci obslužné rutiny události.
this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
this->tabControl1->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::tabControl1_SelectedIndexChanged);
Viz také
.NET Desktop feedback