共用方式為


如何:停用索引標籤頁

在某些情況下,您需要限制存取 Windows Forms 應用程式內可用的資料。 其中一個範例可能是當您在索引標籤控制項的索引標籤頁面中顯示資料時;系統管理員可以在索引標籤頁面上取得您要限制來賓或較低層級使用者的資訊。

以程式設計的方式停用索引標籤頁面

  1. 撰寫程式碼來處理索引標籤的 SelectedIndexChanged 事件。 這是當使用者從一個索引標籤切換至下一個索引標籤時所引發的事件。

  2. 檢查認證。 視所顯示的資訊而定,您可能需要先檢查使用者已用於登入的使用者名稱,或一些其他認證形式後,再允許使用者檢視索引標籤。

  3. 如果使用者具有適當的認證,請顯示已按一下的索引標籤。 如果使用者沒有適當的認證,請顯示訊息方塊或一些其他使用者介面,指出他們沒有存取權,並返回初始索引標籤。

    注意

    當您在生產應用程式中實作這項功能時,您可以在表單的 Load 事件期間執行此認證檢查。 這可讓您在顯示任何使用者介面之前,先隱藏索引標籤,這是進行程序設計更清楚的方法。 以下使用的方法 (檢查認證並在 SelectedIndexChanged 事件期間停用索引標籤) 僅供說明用途。

  4. 或者,如果您有兩個以上的索引標籤頁面,則顯示與原始頁面不同的索引標籤頁面。

    在下列範例中,會使用 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);  
    

另請參閱