Compartir a través de


Cómo: Deshabilitar páginas de pestañas

En algunas ocasiones, querrá restringir el acceso a los datos que están disponibles en la aplicación de Windows Forms. Un ejemplo de esto podría ser cuando tiene datos mostrados en las pestañas de un control de pestañas; los administradores podrían tener información en una página de pestaña que desearía restringir para los usuarios invitados o de menor nivel.

Para deshabilitar páginas de pestañas mediante programación

  1. Escriba código para manejar el evento del control de pestañas SelectedIndexChanged. Este es el evento que se genera cuando el usuario cambia de una pestaña a la siguiente.

  2. Compruebe las credenciales. Dependiendo de la información presentada, es posible que desee comprobar el nombre de usuario con el que el usuario ha iniciado sesión o alguna otra forma de credenciales antes de permitir que el usuario vea la pestaña.

  3. Si el usuario tiene las credenciales adecuadas, muestre la pestaña en la que se hizo clic. Si el usuario no tiene credenciales adecuadas, muestre un cuadro de mensaje o alguna otra interfaz de usuario que indique que no tienen acceso y vuelva a la pestaña inicial.

    Nota:

    Al implementar esta funcionalidad en las aplicaciones de producción, puede realizar esta comprobación de credenciales durante el evento del Load formulario. Esto le permitirá ocultar la pestaña antes de que se muestre cualquier interfaz de usuario, que es un enfoque mucho más limpio para la programación. La metodología que se usa a continuación (comprobar las credenciales y deshabilitar la pestaña durante el SelectedIndexChanged evento) es para fines ilustrativos.

  4. Opcionalmente, si tiene más de dos páginas de pestañas, muestre una página de pestañas diferente de la original.

    En el ejemplo siguiente, se usa un CheckBox control en lugar de comprobar las credenciales, ya que los criterios de acceso a la pestaña variarán según la aplicación. Cuando se genera el SelectedIndexChanged evento, si la comprobación de credenciales es true (es decir, la casilla está activada) y la pestaña seleccionada es TabPage2 (la pestaña con la información confidencial, en este ejemplo), TabPage2 se muestra. De lo contrario, se muestra TabPage3 y aparece un cuadro de mensaje al usuario, indicando que no tiene los privilegios de acceso adecuados. El código siguiente supone un formulario con un CheckBox control (CredentialCheck) y un TabControl control con tres páginas de tabulación.

    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++) Coloque el código siguiente en el constructor del formulario para registrar el controlador de eventos.

    this.tabControl1.SelectedIndexChanged +=
       new System.EventHandler(this.tabControl1_SelectedIndexChanged);
    
    this->tabControl1->SelectedIndexChanged +=
       gcnew System::EventHandler(this, &Form1::tabControl1_SelectedIndexChanged);
    

Consulte también