다음을 통해 공유


방법: 탭 페이지를 사용하지 않도록 설정

경우에 따라 Windows Forms 애플리케이션 내에서 사용할 수 있는 데이터에 대한 액세스를 제한하려고 할 수 있습니다. 이 중 한 가지 예는 탭 컨트롤의 탭 페이지에 데이터가 표시되는 경우일 수 있습니다. 관리자는 탭 페이지에 게스트 또는 하위 수준 사용자로부터 제한하려는 정보를 포함할 수 있습니다.

프로그래밍 방식으로 탭 페이지를 사용하지 않도록 설정하려면

  1. 탭 컨트롤의 SelectedIndexChanged 이벤트를 처리하는 코드를 씁니다. 사용자가 한 탭에서 다음 탭으로 전환할 때 발생하는 이벤트입니다.

  2. 자격 증명을 확인합니다. 제공된 정보에 따라 사용자가 탭을 볼 수 있도록 허용하기 전에 사용자가 로그인한 사용자 이름 또는 다른 형식의 자격 증명을 확인할 수 있습니다.

  3. 사용자에게 적절한 자격 증명이 있는 경우 클릭한 탭을 표시합니다. 사용자에게 적절한 자격 증명이 없는 경우 액세스 권한이 없음을 나타내는 메시지 상자 또는 다른 사용자 인터페이스를 표시하고 초기 탭으로 돌아갑니다.

    참고

    프로덕션 애플리케이션에서 이 기능을 구현하는 경우 양식의 Load 이벤트 중에 이 자격 증명 검사를 수행할 수 있습니다. 이렇게 하면 사용자 인터페이스가 표시되기 전에 탭을 숨길 수 있으며, 이는 프로그래밍에 대한 훨씬 더 명확한 접근 방식입니다. 아래에 사용되는 방법론(자격 증명 확인 및 SelectedIndexChanged 이벤트 중 탭 사용 안 함)은 설명용입니다.

  4. 탭 페이지가 두 개 이상인 경우 필요에 따라 원래 페이지와 다른 탭 페이지를 표시합니다.

    아래 예제에서는 탭에 대한 액세스 기준이 애플리케이션에 따라 달라지므로 자격 증명을 확인하는 대신 CheckBox 컨트롤이 사용됩니다. SelectedIndexChanged 이벤트가 발생하면 자격 증명 확인이 true이고(즉, 확인란이 선택됨) 선택한 탭이 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);  
    

참고 항목