HOW TO:停用索引標籤頁
在某些狀況下,您會想要限制對 Windows Form 應用程式中可用資料的存取。 這種情況的例子之一,是當您將資料顯示在索引標籤控制項的索引標籤頁中時;管理員會擁有索引標籤頁上的資訊,而您會希望限制這些資訊,以防訪客或低階使用者存取。
若要以程式設計的方式停用索引標籤頁
撰寫程式碼處理索引標籤控制項的 SelectedIndexChanged 事件。 這就是當使用者切換索引標籤間時所引發的事件。
檢查認證。 在允許使用者檢視索引標籤前,根據提供的資訊,您可能要檢查使用者用以登入的使用者名稱或其他形式的認證。
如果使用者具有適當的認證,則會顯示使用者所按的索引標籤。 如果使用者沒有適當的認證,則會顯示訊息方塊或其他使用者介面,表示使用者沒有存取權限,並返回最初的索引標籤。
注意事項 在實際執行應用程式中實作這個功能時,您可以在表單的 Load 事件期間執行認證檢查。 如此可讓您在顯示任何使用者介面時隱藏索引標籤,對於程式設計而言是更為徹底的方法。 以下使用的方法論 (在 SelectedIndexChanged 事件期間檢查認證並停用索引標籤) 是做為說明之用。
如果您有兩個以上的索引標籤頁,也可以顯示有別於原始頁的索引標籤頁。
在以下的範例中,CheckBox 控制項是用以替代檢查認證,因為存取索引標籤的準則會依應用程式而有所不同。 當 SelectedIndexChanged 事件引發時,如果認證檢查為 true (即選取了核取方塊),而選取的索引標籤為 TabPage2 (在此範例中為具有機密資訊的索引標籤),則會顯示 TabPage2。 否則,會對使用者顯示 TabPage3 和訊息方塊,表示他們沒有適當的存取權限。 以下程式碼假設含 CheckBox 控制項 (CredentialCheck) 的表單,以及含有三個索引標籤頁的 TabControl 控制項。
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++) 在表單的建構函式中加入下列程式碼,將事件處理常式加以註冊。
this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
this->tabControl1->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::tabControl1_SelectedIndexChanged);
請參閱
工作
HOW TO:使用 Windows Form TabControl 加入和移除索引標籤
HOW TO:變更 Windows Form TabControl 的外觀