Guide pratique pour désactiver les pages d’onglets
Dans certains cas, vous souhaiterez restreindre l’accès aux données disponibles dans votre application Windows Forms. Un exemple de ceci peut être lorsque vous avez des données affichées dans les pages d’onglet d’un contrôle onglet ; les administrateurs peuvent avoir des informations sur une page d’onglets que vous souhaitez restreindre des utilisateurs invités ou de niveau inférieur.
Pour désactiver les pages d’onglets par programmation
Écrivez du code pour gérer l’événement SelectedIndexChanged du contrôle Tab. Il s’agit de l’événement déclenché lorsque l’utilisateur passe d’un onglet à l’autre.
Vérifiez les informations d’identification. Selon les informations présentées, vous pouvez vérifier le nom d’utilisateur que l’utilisateur a connecté avec ou une autre forme d’informations d’identification avant de permettre à l’utilisateur d’afficher l’onglet.
Si l’utilisateur a les informations d’identification appropriées, affichez l’onglet sur lequel vous avez cliqué. Si l’utilisateur n’a pas d’informations d’identification appropriées, affichez une boîte de message ou une autre interface utilisateur indiquant qu’il n’a pas accès et revenez à l’onglet initial.
Note
Lorsque vous implémentez cette fonctionnalité dans vos applications de production, vous pouvez effectuer cette vérification des informations d’identification pendant l’événement de Load du formulaire. Cela vous permet de masquer l’onglet avant l’affichage d’une interface utilisateur, qui est une approche beaucoup plus propre de la programmation. La méthodologie utilisée ci-dessous (vérification des informations d’identification et désactivation de l’onglet pendant l’événement SelectedIndexChanged) est à des fins d’illustration.
Si vous avez plus de deux pages d’onglets, affichez une page d’onglet différente de celle d’origine.
Dans l’exemple ci-dessous, un contrôle CheckBox est utilisé au lieu de vérifier les informations d’identification, car les critères d’accès à l’onglet varient selon l’application. Lorsque l’événement SelectedIndexChanged est déclenché, si la vérification des informations d’identification est vraie (c’est-à-dire que la case à cocher est cochée) et que l’onglet sélectionné est
TabPage2
(l’onglet contenant les informations confidentielles, dans cet exemple),TabPage2
s’affiche. Sinon,TabPage3
s’affiche et une boîte de message s’affiche à l’utilisateur, indiquant qu’il n’a pas les privilèges d’accès appropriés. Le code ci-dessous suppose un formulaire avec un contrôle CheckBox (CredentialCheck
) et un contrôle TabControl avec trois pages d’onglets.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++) Placez le code suivant dans le constructeur du formulaire pour inscrire le gestionnaire d’événements.
this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);
this->tabControl1->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::tabControl1_SelectedIndexChanged);
Voir aussi
.NET Desktop feedback