This documentation is archived and is not being maintained.

Disabling Tab Pages Programmatically

Visual Studio .NET 2003

On some occasions, you will want to restrict access to data that is available within your Windows Forms application. One example of this might be when you have data displayed in the tab pages of a tab control; administrators could have information on a tab page that you would want to restrict from guest or lower-level users.

To disable tab pages programmatically

  1. Write code to handle the tab control's SelectedIndexChanged event. This is the event that is raised when the user switches from one tab to the next.
  2. Check credentials. Depending upon the information presented, you may want to check the user name the user has logged in with or some other form of credentials before allowing the user to view the tab.
  3. If the user has appropriate credentials, display the tab that was clicked. If the user does not have appropriate credentials, display a message box or some other user interface, indicating that they do not have access privileges and set that tab page's Enabled property to false.
    Note   When you implement this functionality in your production applications, you can perform this credential check during the form's Load event. This will allow you to disable the tab before any user interface is shown, which is a much cleaner approach to programming. The methodology used below (checking credentials and disabling the tab during the SelectedIndexChanged event) is for illustrative purposes.
  4. Optionally, if you have more than two tab pages, display a tab page different from the original.

    In the example below, a CheckBox control is used in lieu of checking the credentials, as the criteria for access to the tab will vary by application. When the SelectedIndexChanged event is raised, if the credential check is true (that is, the check box is checked) and the selected tab is TabPage2 (the tab with the confidential information, in this example), then TabPage2 is displayed. Otherwise, TabPage3 is displayed and a message box is shown to the user, indicating they did not have appropriate access privileges. The code below assumes a form with a CheckBox control (CredentialCheck) and a TabControl control with three tab pages.

    ' Visual Basic
    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
    // C#
    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;
    // C++
       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(S"Unable to load tab. ",
                S"You have insufficient access privileges."));
             tabControl1->SelectedTab = tabPage3;
    Visual C# and Visual C++ Note   Be sure that the necessary code to enable the event handler is present. In this case, it would be similar to the following:
    // C#
    this.tabControl1.SelectedIndexChanged +=
    new System.EventHandler(this.tabControl1_SelectedIndexChanged);
    // C++
    this->tabControl1->SelectedIndexChanged +=
    new System::EventHandler(this, tabControl1_SelectedIndexChanged);

See Also

Introduction to the Windows Forms TabControl | Adding a Control to a Tab Page | Adding and Removing Tabs with the Windows Forms TabControl | Changing the Appearance of the Windows Forms TabControl