Como: Desativar as páginas de guia

Em algumas ocasiões, você deseja restringir o acesso a dados que estão disponíveis no seu aplicativo Windows Forms. Um exemplo disso pode ser quando você tiver dados exibidos nas páginas de guia de um controle guia; os administradores poderiam ter informações em uma página de guia que você deseja impedir que usuários de nível inferior ou de convidado.

Para desabilitar a páginas de guia programaticamente

  1. Escrever código para manipular o controle de guia SelectedIndexChanged de evento. Este é o evento que é gerado quando o usuário alterna de uma guia para a próxima.

  2. Verificar as credenciais. Dependendo das informações apresentadas, convém verificar se o usuário fez logon com o nome de usuário ou alguma outra forma de credenciais antes de permitir que o usuário exibir a guia.

  3. Se o usuário tiver as credenciais apropriadas, exiba a guia que foi clicada. Se o usuário não tiver as credenciais apropriadas, exibir uma caixa de mensagem ou alguma outra interface do usuário indicando que eles não têm acesso e retornar à guia inicial.

    ObservaçãoObservação

    Quando você implementar essa funcionalidade em seus aplicativos de produção, você pode executar essa verificação de credencial durante o formulário Load de evento. Isso permitirá que você oculte a guia antes de qualquer interface do usuário é exibido, o que é uma abordagem muito mais limpa à programação. A metodologia usada abaixo (verificação de credenciais e desativando a guia durante o SelectedIndexChanged evento) é para fins ilustrativos.

  4. Opcionalmente, se você tiver mais de duas páginas de guia, exiba uma página da guia diferente do original.

    No exemplo abaixo, um CheckBox controle é usado no lugar de verificação de credenciais, como os critérios para o acesso à guia irá variar por aplicativo. Quando o SelectedIndexChanged evento é gerado se a verificação de credencial é verdadeira (ou seja, a caixa de seleção está marcada) e a guia selecionada é TabPage2 (guia com as informações confidenciais, neste exemplo), em seguida, TabPage2 é exibido. Caso contrário, TabPage3 é exibida e uma caixa de mensagem é mostrada ao usuário, indicando que não tivessem privilégios de acesso apropriados. O código a seguir supõe um formulário com um CheckBox control (CredentialCheck) e um TabControl o controle com três páginas de guia.

    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++) Coloque o seguinte código no construtor do formulário para registrar o manipulador de eventos.

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

Consulte também

Tarefas

Como: Adicionar um controle a uma página da guia

Como: Adicionar e remover guias com o Windows Forms TabControl

Como: Alterar a aparência do Windows Forms TabControl

Referência

Visão geral do controle do TabControl (Windows Forms)