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


Практическое руководство. Блокировка доступа ко вкладкам

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

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

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

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

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

    Примечание

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

  4. Если страниц вкладок больше двух, можно отобразить вкладку, отличающуюся от первоначальной.

    В приведенном ниже примере вместо проверки учетных данных используется элемент управления CheckBox, поскольку условия доступа к вкладке будут изменяться в зависимости от приложения. Если при распознавании события SelectedIndexChanged проверка учетных данных прошла успешно (т. е. флажок установлен) и выбрана вкладка 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);
    

См. также

Задачи

Практическое руководство. Добавление элемента управления на вкладку

Практическое руководство. Добавление и удаление вкладок с помощью элемента управления TabControl в Windows Forms

Практическое руководство. Изменение внешнего вида элемента управления TabControl в Windows Forms

Ссылки

Общие сведения об элементе управления TabControl (Windows Forms)