.NET 3.5에서 Tab Control의 Selected Tab을 switch하는 방법

닷넷 3.5를 기준으로, WinForms에서 TabControl의 선택된 탭(SelectedTab)을 기준으로 분기 처리를 하고 싶다면, switch 문에서 직접 TabPage 객체를 비교할 수는 없답니다. switch 문은 string, int 등 기본형 값만 비교 가능하기 때문이에요.

사용 가능한 방법

SelectedTab의 속성 중 아래와 같은 값을 switch의 조건으로 사용할 수 있습니다

  • SelectedTab.Name: 탭에 설정된 이름을 기준으로 처리
  • SelectedTab.Text: 탭에 표시되는 텍스트로 처리 (표시하는 이름이 사용자마다 달리하는 경우 문제 발생)
  • SelectedIndex: 탭의 순서를 숫자로 비교 (탭 순서가 사용자마다 다른 경우 문제 발생)
switch (tabControl1.SelectedTab.Name)
{
    case "tabPage1":
        // tabPage1 선택 시
        break;
    case "tabPage2":
        // tabPage2 선택 시
        break;
}

또는 인덱스를 사용할 수도 있습니다

switch (tabControl1.SelectedIndex)
{
    case 0:
        // 첫 번째 탭
        break;
}

객체 직접 비교는 불가

switch (tabControl1.SelectedTab) 형태로 TabPage 객체를 직접 비교하는 건 불가능하지만, if 문에서는 아래와 같이 사용할 수 있습니다. (닷넷 3.5 기준이에요, 버전이 높다면 다른 방법도 있습니다.)

if (tabControl1.SelectedTab == tabPage1)
{
    // tabPage1이 선택됨
}

정리

switch 문을 사용하려면 Name, Text, SelectedIndex 등 비교 가능한 속성으로 처리해야 하며, 그 외의 경우에는 if 문을 사용하는 것이 대안이라고 할 수 있어요.

이전최근
댓글 쓰기
가져가실 때, 출처 표시 부탁드려요! 감사합니다. 💗