Dela via


Gör så här: Inaktivera tabbsidor

Vid vissa tillfällen vill du begränsa åtkomsten till data som är tillgängliga i ditt Windows Forms-program. Ett exempel på detta kan vara när du har data som visas på tabbsidorna i en flikkontroll. administratörer kan ha information på en fliksida som du vill begränsa från gästanvändare eller användare på lägre nivå.

Så här inaktiverar du fliksidor programmatiskt

  1. Skriv kod för att hantera tabbkontrollens SelectedIndexChanged händelse. Det här är den händelse som utlöses när användaren växlar från en flik till en annan.

  2. Kontrollera autentiseringsuppgifterna. Beroende på vilken information som visas kanske du vill kontrollera användarnamnet som användaren har loggat in med eller någon annan form av autentiseringsuppgifter innan användaren kan visa fliken.

  3. Om användaren har lämpliga autentiseringsuppgifter visar du fliken som klickades. Om användaren inte har lämpliga autentiseringsuppgifter visar du en meddelanderuta eller något annat användargränssnitt som anger att de inte har åtkomst och återgår till den första fliken.

    Not

    När du implementerar den här funktionen i dina produktionsprogram kan du utföra den här autentiseringskontrollen under formulärets Load händelse. På så sätt kan du dölja fliken innan något användargränssnitt visas, vilket är en mycket renare metod för programmering. Den metod som används nedan (kontroll av autentiseringsuppgifter och inaktivering av fliken under händelsen SelectedIndexChanged) är i illustrativt syfte.

  4. Om du har fler än två fliksidor kan du också visa en fliksida som skiljer sig från originalet.

    I exemplet nedan används en CheckBox kontroll i stället för att kontrollera autentiseringsuppgifterna, eftersom villkoren för åtkomst till fliken varierar beroende på program. När den SelectedIndexChanged händelsen aktiveras, om autentiseringskontrollen är sann (det vill säga kryssrutan är markerad) och den valda fliken är TabPage2 (fliken med konfidentiell information, i det här exemplet), visas TabPage2. Annars visas TabPage3 och en meddelanderuta visas för användaren, vilket anger att användaren inte har rätt åtkomstbehörighet. Koden nedan förutsätter ett formulär med en CheckBox kontroll (CredentialCheck) och en TabControl kontroll med tre fliksidor.

    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++) Placera följande kod i formulärets konstruktor för att registrera händelsehanteraren.

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

Se även