Nasıl yapılır: Sekme Sayfalarını Devre Dışı Bırakma
bazı durumlarda Windows Forms uygulamanızda bulunan verilere erişimi kısıtlamak isteyeceksiniz. Bunun bir örneği, bir sekme denetiminin sekme sayfalarında görüntülenecek verileriniz olabilir. Yöneticiler, Konuk veya alt düzey kullanıcılardan kısıtlamak istediğiniz bir sekme sayfası hakkında bilgi sağlayabilir.
Sekme sayfalarını programlı olarak devre dışı bırakmak için
Sekme denetiminin olayını işlemek için kod yazın SelectedIndexChanged . Bu, Kullanıcı bir sekmeden sonrakine geçtiğinde oluşturulan olaydır.
Kimlik bilgilerini denetleyin. Sunulan bilgilere bağlı olarak, kullanıcının sekmeyi görüntülemesine izin vermeden önce kullanıcının oturum açtığı Kullanıcı adını veya başka bir kimlik bilgileri biçimini denetlemek isteyebilirsiniz.
Kullanıcının uygun kimlik bilgileri varsa, tıklanan sekmeyi görüntüleyin. Kullanıcı uygun kimlik bilgilerine sahip değilse, bir ileti kutusu veya erişimleri olmadığını belirten başka bir kullanıcı arabirimi görüntüleyin ve ilk sekmesine geri dönün.
Not
Bu işlevselliği üretim uygulamalarınızda uyguladığınızda, formun olayında bu kimlik bilgisi denetimini gerçekleştirebilirsiniz Load . Bu, programlama için çok daha temiz bir yaklaşım olan herhangi bir kullanıcı arabirimi gösterilmeden önce sekmeyi gizlemenizi sağlar. Aşağıda kullanılan metodolojide (olay sırasında, kimlik bilgilerinin denetlenmesi ve sekmenin devre dışı bırakılması SelectedIndexChanged ) tanım amaçlıdır.
İsteğe bağlı olarak, ikiden fazla sekme sayfanız varsa orijinalden farklı bir sekme sayfası görüntüleyin.
Aşağıdaki örnekte, CheckBox sekmeye erişim ölçütleri uygulamaya göre farklılık gösterebileceğinden, kimlik bilgilerini denetlemek yerine bir denetim kullanılır. SelectedIndexChangedOlay ortaya çıktığında, kimlik bilgisi denetimi true ise (yani, onay kutusu işaretliyse) ve seçili sekme
TabPage2(gizli bilgilerin bulunduğu sekme) iseTabPage2görüntülenir. Aksi takdirde,TabPage3görüntülenir ve kullanıcıya uygun erişim ayrıcalıklarına sahip olmadığını belirten bir ileti kutusu gösterilir. Aşağıdaki kod, CheckBox denetimi (CredentialCheck) ve TabControl üç sekme sayfası olan bir denetimi olan bir formu varsayar.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 Subprivate 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++) Olay işleyicisini kaydetmek için formun oluşturucusuna aşağıdaki kodu yerleştirin.
this.tabControl1.SelectedIndexChanged += new System.EventHandler(this.tabControl1_SelectedIndexChanged);this->tabControl1->SelectedIndexChanged += gcnew System::EventHandler(this, &Form1::tabControl1_SelectedIndexChanged);