JJC's 테크니컬 다이어리

탭컨트롤TabControl 사용시 탭선택 제한하기 본문

CSharp.Net

탭컨트롤TabControl 사용시 탭선택 제한하기

털털한JJC 2017. 4. 12. 14:40

탭컨트롤을 사용하여 위저드처럼 일련의 작업 순서를 지정하고 싶을 때가 있습니다.


이런경우 탭컨트롤의 탭의 선택이 안되게 하고,

탭시트내 별도의 버튼(보통Next) 을 클릭했을 때, 프로그램코드로 탭변경이 

되도록 하고 싶은 경우가 있을 것입니다.

그런데, Selecting 이벤트 핸들러에서 e.Cancel = true 라고 지정하는 경우 탭 컨트롤의 탭버튼의 동작도 막아 버리지만, 프로그램적으로 SelectTab 같은 메소드도 먹히지 않는 문제가 있습니다.

이런 경우 간단한 해결 방법이 있습니다.


// 현재 선택탭을 나타내는 변수를 선언하고

int currentSelectedTab = 0;


// Selecting 메소드에서 위의 변수기준 현재 선택 탭만을 선택되도록 처리 (코드참조)

        private void tabControl1_Selecting(object sender, TabControlCancelEventArgs e)

        {

            int selectedTab = tabControl1.SelectedIndex;

            //Disable the tab selection

            if (currentSelectedTab != selectedTab)

            {

                //If selected tab is different than the current one, re-select the current tab.

                //This disables the navigation using the tab selection.

                tabControl1.SelectTab(currentSelectedTab);

            }

        }


// Next 버튼 클릭 이벤트에서 현재선택탭을 나타내는 변수(currentSelectedTab)를 변경 처리

        private void btn_Next1_Click(object sender, EventArgs e)

        {

            currentSelectedTab++;

            tabControl1.SelectedIndex = currentSelectedTab;

        }