Procedimiento para deshabilitar fichas
En ocasiones, le interesará restringir el acceso a los datos que están disponibles en la aplicación de Windows Forms. Un ejemplo de esto podrían ser los casos en los que se muestran datos en las fichas de un control de pestaña; los administradores podrían tener información en una ficha a la que usted le gustaría que no tuvieran acceso los usuarios invitados o de nivel inferior.
Para deshabilitar las fichas mediante programación
Escriba código para controlar el evento SelectedIndexChanged del control de pestaña. Este es el evento que se genera cuando el usuario cambia de una pestaña a la siguiente.
Compruebe las credenciales. En función de la información que se presenta, es posible que le interese comprobar el nombre de usuario con el que ha iniciado sesión el usuario u otro tipo de credenciales antes de permitirle ver la pestaña.
Si el usuario tiene las credenciales adecuadas, muestre la pestaña en la que hizo clic. Si el usuario no las tiene, muestre un cuadro de mensaje u otra interfaz de usuario que indique que no tiene 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 Load del 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 (es decir, comprobar las credenciales y deshabilitar la pestaña durante el evento SelectedIndexChanged) solo tiene fines ilustrativos.
Opcionalmente, si tiene más de dos fichas, muestre una ficha diferente de la original.
En el ejemplo siguiente, se usa un control CheckBox en lugar de comprobar las credenciales, ya que los criterios para acceder a la pestaña variarán según la aplicación. Cuando se genera el evento SelectedIndexChanged, 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), se muestraTabPage2
. De lo contrario, se muestraTabPage3
y un cuadro de mensaje al usuario en el que se le indica que no tiene los privilegios de acceso adecuados. En el código siguiente se da por supuesto que existe un formulario con un control CheckBox (CredentialCheck
) y un control TabControl con tres fichas.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# y Visual C++). Incluya 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