2011-08-30 3 views
2

양식에 탭 컨트롤이 있고 사용자 컨트롤이 폼로드 이벤트에서 각 탭 페이지로로드됩니다. 탭 사이의 명령 단추를 사용하여 탭 사이를 전환하려고합니다. 즉, 단추가 폼이 아닌 다른 사용자 컨트롤에 있음을 의미합니다.내에서 단추를 사용하여 탭 페이지간에 전환

tabControl1.SelectedTab = tabPage2; 

을 사용할 수 없습니다. 이것을 어떻게 할 수 있습니까?

+0

내 대답은 – reggie

답변

3
tabControl1.SelectedIndex = index; 
//where index is the index (integer value) of the tabpage you want to select 

UPDATE

확인 :

public int TabControlIndex 
{ 
get { return tabControl1.index; } 
set { tabControl1.index = value; } 
} 

당신이 당신의 form load event 등에 동일하게 호출 할 수 있습니다 How to access properties of a usercontrol in C#

이 같은 사용자 정의 컨트롤의 속성으로 속성을 노출 this :

Usercontrol1.TabControlIndex = index; 
//where index is the index (integer value) of the tabpage you want to select 
당신은 하나의 생성자 또는 일부 초기화 방법을 통해 매개 변수로 UserControl을에 (그 pageIndex와 함께)을 TabControl 인스턴스를 전달할 수 있습니다
+0

아래에 제공 한 업데이트를 확인하십시오. 사용자 정의 컨트롤이 아닌 폼에 그대로 있기 때문에 사용자 정의 컨트롤에서 tabControl에 액세스 할 수 없습니다. 사용자 컨트롤은 탭 페이지에로드되고 단추는 이러한 사용자 컨트롤에도 있습니다. – Lihini

+0

업데이트를 확인하십시오. 내 대답 위의 링크를 제공했습니다. 또한 링크에 언급 된 솔루션을 기반으로 코드 조각을 추가했습니다. 도움이되는지 알려주세요. – reggie

+0

고마워. 이것은 도움이되었습니다. – Lihini

0

이 경우 귀하의 UserControl에서

MyUserControl userControl = new MyUserControl(tabControl1, pageIndex1); 

또는

MyUserControl userControl2 = new MyUserControl(); 
userControl2.BindToTabControl(tabControl1, pageIndex2); 

사용자 클릭 및 탭 전환을 처리 할 수 ​​있습니다.

또는 사용자가 UserControl 단추를 클릭 할 때 발생하는 이벤트를 UserControl에서 만들 수 있습니다. 기본 양식은이 이벤트에 가입하고 처리해야합니다. 이 경우 기본 양식의 코드가 탭 전환을 담당합니다. 내가 생각하기에 더 나은 해결책이다.

+0

고마워. 나는 너의 대답을 너무 좋아한다. – Lihini