Partilhar via


Como: Desativar páginas de guia

Em algumas ocasiões, você desejará restringir o acesso aos dados disponíveis em seu aplicativo Windows Forms. Um exemplo disso pode ser quando você tem dados exibidos nas páginas de guia de um controle de guia; Os administradores podem ter informações em uma página de guia que você gostaria de restringir de usuários convidados ou de nível inferior.

Para desativar páginas de tabulação programaticamente

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

  2. Verifique as credenciais. Dependendo das informações apresentadas, você pode querer verificar o nome de usuário com o qual o usuário fez login ou alguma outra forma de credenciais antes de permitir que o usuário visualize a guia.

  3. Se o utilizador tiver credenciais apropriadas, mostre o separador que foi clicado. Se o usuário não tiver credenciais apropriadas, exiba uma caixa de mensagem ou alguma outra interface do usuário indicando que ele não tem acesso e retorne à guia inicial.

    Observação

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

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

    No exemplo abaixo, um controle de CheckBox é usado em vez de verificar as credenciais, pois os critérios de acesso à guia variam de acordo com o aplicativo. Quando o evento SelectedIndexChanged é gerado, se a verificação de credenciais for verdadeira (ou seja, a caixa de seleção estiver marcada) e a guia selecionada estiver TabPage2 (a guia com as informações confidenciais, neste exemplo), TabPage2 será exibida. Caso contrário, TabPage3 é exibido e uma caixa de mensagem é mostrada ao usuário, indicando que ele não tinha privilégios de acesso apropriados. O código abaixo assume um formulário com um controle CheckBox (CredentialCheck) e um controle TabControl com três páginas de tabulação.

    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 código a seguir 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);  
    

Ver também