Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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
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.
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.
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.
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 muestraTabPage3
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
.NET Desktop feedback