닷넷 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 문을 사용하는 것이 대안이라고 할 수 있어요.
