방법: 탭 페이지 사용 안 함
업데이트: 2007년 11월
경우에 따라 Windows Forms 응용 프로그램에서 사용할 수 있는 데이터에 대한 액세스를 제한해야 할 수 있습니다. 예를 들어 데이터가 탭 컨트롤의 탭 페이지에 표시된 경우가 여기에 해당합니다. 즉, 관리자가 탭 페이지에 표시한 정보를 게스트 또는 하위 수준 사용자가 액세스할 수 없도록 제한할 수 있습니다.
프로그래밍 방식으로 탭 페이지를 비활성화하려면
탭 컨트롤의 SelectedIndexChanged 이벤트를 처리하는 코드를 작성합니다. 이 이벤트는 사용자가 한 탭에서 다음 탭으로 전환할 때 발생합니다.
자격 증명을 확인합니다. 제공된 정보에 따라 로그인한 사용자의 이름 또는 다른 형식의 자격 증명을 확인한 다음 사용자에게 탭을 볼 수 있는 권한을 허용합니다.
사용자가 올바른 자격 증명을 갖고 있는 경우 클릭된 탭을 표시하고 사용자의 자격 증명이 올바르지 않으면 액세스 권한이 없다는 메시지 상자 또는 다른 사용자 인터페이스를 표시한 다음, 탭 페이지의 Enabled 속성을 false로 설정합니다.
참고: 프로덕션 응용 프로그램에서 이 기능을 구현할 경우에는 폼의 Load 이벤트를 실행하는 동안 자격 증명을 확인할 수 있습니다. 이렇게 하면 사용자 인터페이스가 표시되기 전에 탭을 비활성화할 수 있습니다. 이 방식이 프로그래밍하기에 훨씬 명확합니다. 아래 예제에서는 SelectedIndexChanged 이벤트를 실행하는 동안 자격 증명을 확인하고 탭을 비활성화하는 방법을 사용했는데 이는 설명을 하기 위한 목적이며 유용한 방법은 아닙니다.
(옵션) 탭 페이지가 세 개 이상 있는 경우에는 원래 탭 페이지와 다른 탭 페이지를 표시합니다.
응용 프로그램에 따라 탭에 액세스하기 위한 조건이 다르므로 아래 예제에서는 자격 증명을 확인하는 대신 CheckBox 컨트롤이 사용됩니다. SelectedIndexChanged 이벤트가 발생하는 경우 자격 증명 확인이 true(확인란이 선택된 상태)이고 선택한 탭이 TabPage2(이 예제에서는 기밀 정보가 포함된 탭)이면 TabPage2가 표시됩니다. 그렇지 않으면 TabPage3가 표시되고 액세스 권한이 없음을 나타내는 메시지 상자가 표시됩니다. 아래 코드에서는 폼에 세 개의 탭 페이지가 포함된 TabControl 컨트롤과 CheckBox 컨트롤(CredentialCheck)이 있다고 가정합니다.
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);
참고 항목
작업
방법: Windows Forms TabControl을 사용하여 탭 추가 및 제거
방법: Windows Forms TabControl의 모양 변경