2009-11-10 4 views
0

탭 컨트롤을 사용하여 DataGridView에 표시된 데이터 세트 사이를 전환하고 싶습니다 (현재 라디오 버튼을 사용하고 있습니다). 런타임에 한 탭에서 다음 탭으로 컨트롤을 이동할 수 있지만 SelectedIndexChanged 이벤트는 디자이너에서 실행되지 않습니다. 디자이너의 탭 컨트롤의 여러 페이지에 컨트롤 표시

private void tabControl1_SelectedIndexChanged(object sender, EventArgs e) 
{ 
    tabControl1.TabPages[tabControl1.SelectedIndex].Controls.Add(label1); 
} 

내가 DGV을 가질 수있는 방법은 디자이너에서 내 모든 탭이 표시인가, 또는이 내가 함께 살기로해야합니다 제한 사항입니다?

+0

모든 탭에서 동일한 격자를 원하십니까? 왜? 탭의 데이터가 다른가요? 정확히 성취하려는 것은 무엇입니까? – Theresa

+0

데이터가 다릅니다. 현재 구현은 기본적으로 OnRadioButtonXChecked (...) {LoadDataForX (...);} –

답변

2

탭 컨트롤이 DGV 이외의 컨트롤을 전환합니까? 탭 컨트롤을 아래로 놓고 탭 높이만큼만 세로 높이를 조정 한 다음 DGV를 탭 컨트롤에 넣지 않도록 DGV를 탭 컨트롤에 배치하십시오.

+0

은 그리드 만 있지만 좋은 솔루션 인 경우에만 작동합니다. – RvdK

+0

내가보기에 좋지 않을지라도 그럴 수도 있습니다. 마지막 탭 이외의 다른 탭을 선택하면 선택한 탭이 약간 넓어지기 때문에 탭 페이지의 컨트롤에 대해 축소 된 크기 주변의 테두리 인 '스텁'이 하나 또는 두 개 있습니다. –

0

저는 이것이 Visual Studio 디자이너의 한계라고 확신합니다.

나는 JMarsh의 솔루션과도 같이 가고 싶습니다.

+0

나는 그의 솔루션의 스크린 샷과 표준 구성을 의견을 위해 직장의 땅콩 갤러리에 제출했다. 이것은 디자이너의 성가신 문제 일 뿐이므로, 내 상사가 자신이 가장 좋아하는 것이 무엇이든 결정할 것입니다. –

1

이 제한 사항을 확인할 수 있을지 모르겠지만 올바른 구현입니다. 탭 페이지는 컨테이너이며, 위젯에는 오직 하나의 직접적인 부모 컨테이너 만있을 수 있습니다. 따라서 디자이너는 즉시 부모를 재 할당해서는 안됩니다. DGV를 탭 페이지 컨테이너에 넣고 싶지는 않지만 탭 컨트롤에 대한 이벤트 처리의 일부로 DGV와 상호 작용할 수있는 것처럼 들립니다.

그렇다면 위의 Dan Neely가 언급 한 프레젠테이션 문제를 처리하기 위해 패널을 사용하고 자동 크기 조정을 제안하는 것이 좋습니다.

예를 들어, 다른 "모드"가있는 검색 시스템을 생각해보십시오. 탭 컨트롤을 상단 패널에 배치하고 위젯이 포함 된 탭 페이지를 사용하여 '모드'와 일치하는 검색 기준을 구현합니다 (예 : 키워드 검색과 속성 검색, 워크 플로 검색). DGV를 탭이있는 패널 아래에 별도의 패널에 놓습니다. 그런 다음 탭 이벤트가있을 때 DGV 내용을 조작 할 수 있습니다. 패널은 크기 조정의 프리젠 테이션 문제를 관리 할 수 ​​있습니다.