Procedura: disabilitare le schede

In alcune occasioni, è necessario limitare l'accesso ai dati disponibili all'interno dell'applicazione Windows Form. Un esempio potrebbe essere quando si dispone di dati visualizzati nelle pagine di tabulazioni di un controllo struttura a schede; Gli amministratori possono avere informazioni su una pagina di schede che si desidera limitare agli utenti guest o di livello inferiore.

Per disabilitare le pagine a schede a livello di codice

  1. Scrivere codice per gestire l'evento del SelectedIndexChanged controllo struttura a schede. Si tratta dell'evento generato quando l'utente passa da una scheda alla successiva.

  2. Controllare le credenziali. A seconda delle informazioni presentate, è possibile controllare il nome utente con cui l'utente ha eseguito l'accesso o un altro tipo di credenziali prima di consentire all'utente di visualizzare la scheda.

  3. Se l'utente dispone di credenziali appropriate, visualizzare la scheda selezionata. Se l'utente non dispone di credenziali appropriate, visualizzare una finestra di messaggio o un'altra interfaccia utente che indica che non ha accesso e tornare alla scheda iniziale.

    Nota

    Quando si implementa questa funzionalità nelle applicazioni di produzione, è possibile eseguire questo controllo delle credenziali durante l'evento del Load modulo. Ciò consentirà di nascondere la scheda prima che venga visualizzata qualsiasi interfaccia utente, che è un approccio molto più pulito alla programmazione. La metodologia usata di seguito (verifica delle credenziali e disabilitazione della scheda durante l'evento SelectedIndexChanged ) è a scopo illustrativo.

  4. Facoltativamente, se sono presenti più di due pagine di schede, visualizzare una pagina di tabulazioni diversa dall'originale.

    Nell'esempio seguente viene usato un CheckBox controllo anziché controllare le credenziali, in quanto i criteri per l'accesso alla scheda variano in base all'applicazione. Quando viene generato l'evento SelectedIndexChanged , se il controllo delle credenziali è true (ovvero la casella di controllo è selezionata) e la scheda selezionata è TabPage2 (la scheda con le informazioni riservate, in questo esempio), TabPage2 viene visualizzata. In caso contrario, TabPage3 viene visualizzata una finestra di messaggio che indica che non dispone di privilegi di accesso appropriati. Il codice seguente presuppone una maschera con un CheckBox controllo (CredentialCheck) e un TabControl controllo con tre pagine di schede.

    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++) Inserire il codice seguente nel costruttore del modulo per registrare il gestore eventi.

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

Vedi anche