Поделиться через


Как отключить страницы вкладок

В некоторых случаях необходимо ограничить доступ к данным, доступным в приложении Windows Forms. Одним из примеров этого может быть отображение данных на страницах вкладок элемента управления вкладками; Администраторы могут иметь сведения на странице вкладки, доступ к которой вы хотите ограничить от гостевых или более низких пользователей.

Отключение страниц вкладок программным способом

  1. Напишите код для обработки события SelectedIndexChanged элемента управления вкладками. Это событие, которое возникает, когда пользователь переключается с одной вкладки на следующую.

  2. Проверьте учетные данные. В зависимости от представленных сведений может потребоваться проверить имя пользователя, вошедшего в систему, или другую форму учетных данных, прежде чем разрешить пользователю просматривать вкладку.

  3. Если у пользователя есть соответствующие учетные данные, отобразите вкладку, которая была щелкнуна. Если у пользователя нет соответствующих учетных данных, отобразится окно сообщения или другой пользовательский интерфейс, указывающий, что у него нет доступа, и вернитесь на начальную вкладку.

    Заметка

    При реализации этой функции в рабочих приложениях эту проверку учетных данных можно выполнить во время события Load формы. Это позволит скрыть вкладку перед отображением любого пользовательского интерфейса, что является гораздо более чистым подходом к программированию. Методология, используемая ниже (проверка учетных данных и отключение вкладки во время события SelectedIndexChanged) является иллюстрирующей целью.

  4. При необходимости, если у вас более двух страниц вкладок, отображается страница вкладок, отличная от исходной.

    В приведенном ниже примере элемент управления CheckBox используется вместо проверки учетных данных, так как критерии доступа к вкладке зависят от приложения. Когда возникает событие SelectedIndexChanged, если флажок учетных данных имеет значение true (то есть флажок установлен), а выбранная вкладка TabPage2 (вкладка с конфиденциальной информацией в этом примере), то отображается TabPage2. В противном случае отображается TabPage3 и отображается окно сообщения пользователю, указывающее, что у них нет соответствующих прав доступа. В приведенном ниже коде предполагается форма с элементом управления CheckBox (CredentialCheck) и элементом управления TabControl с тремя страницами вкладок.

    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++) Поместите следующий код в конструктор формы, чтобы зарегистрировать обработчик событий.

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

См. также