2014-02-06 3 views
1

동적으로 생성 된 탭 페이지가있는 탭 컨트롤이있는 C#에서 Windows 양식 응용 프로그램을 개발 중입니다. ComboSet Item 1에서 동일한 레이아웃과 컨트롤 (ComboBoxes, TextBoxes, Buttons & DataGridView)을 새로 만든 탭 페이지 (이 경우 ComboSet Item 2)에 추가하려고합니다. 어떻게해야하고 컨트롤의 이름을 지정하는 방법은 무엇입니까?동적으로 생성 된 새 탭 페이지에 컨트롤을 추가하는 방법은 무엇입니까?

enter image description here

새로운 탭이 1,2,3... n에서 생성됩니다. 따라서 새로운 탭 아래에 'n'개의 DataGridView도 추가됩니다. 이러한 DataGridView를 바인딩하는 방법이 있습니까? 그렇게 할 수 있습니까?

도움이 될 것입니다!

답변

2

새 사용자 정의 컨트롤 -> 모든 컨트롤을 사용자 정의 컨트롤에 배치 -> 모든 컨트롤의 속성을 만듭니다. 사용자 정의 컨트롤 만 관리하면됩니다.

void AddTab() 
{ 
    TabPage tbp = new TabPage(); 
    tbp.Name=TabControl1.TabPages.Count.ToString(); 
    MyUserControl cnt = new MyUserControl(); 
    cnt.Name="Cnt" + tbp.Name; 
    cnt.Dock=DockStyle.Fill; 
    tbp.Controls.Add(cnt); 
} 

코드를 사용자 정의 컨트롤에 배치 할 수없는 경우 각 컨트롤에 대한 이벤트를 만들 수 있습니다. 예 : ProductName_SelectedValueChange ProductName 콤보 상자의 경우 할인 값에 대한 유효성 검사를 수행하고 AddTab() 메서드로 처리합니다.

+0

답변 해 주셔서 감사합니다. 이것은 나의 첫 번째 질문을 해결합니다. 하지만 여전히 바인딩 DataGridView에 문제가 있습니다. 내가 이해할 수없는 유일한 것은 내 'UserControl'을 만들 때 모든 ComboSet Items에 대해 동일한 컨트롤 이름을 사용해야한다는 것입니다. 예 : 다른 데이터에 대한 새 탭에서'dgrdCS'라는 DataGridView를 사용한다면 어떻게 바인딩 할 수 있습니까? 이전 데이터를 대체하고 새로운 데이터로 바인딩합니까? –

+0

DataGridView 컨트롤을 으로 볼 수 있습니다. MyUserControl cnt = (MyUserControl) TabControl.TabPages [Index] .Controls [0]; cnt.grid.DataSouce = dtTable; 그리드는 속성과 마찬가지로 수행 할 것이므로 각 그리드 컨트롤에 이름을 지정할 필요가 없습니다. 이름이나 색인으로 탭을 관리 할 수 ​​있습니다. – Shell

+0

데이터 소스를 바인딩하기 위해 UserControl 형식의 DataGridView 코드를 작성합니다. 귀하의 답변을 최종 해결책으로 표시했습니다. 당신의 도움을 주셔서 감사합니다. –

0

TabPages는 Panel과 같은 일반 컨테이너입니다. tabpage.controls.add() 메서드를 사용하여 새 항목을 추가 할 수 있습니다. 항목 이름을 지정하려면 myitem.Name = "Test" 속성을 사용하십시오. 더 많은 페이지에 수정 된 항목 세트가 필요하면이를 위해 Usercontrol을 만들어야합니다.

+0

'tabpage.Controls.Add()'메소드를 사용하여 새 탭 페이지를 추가 할 수 있습니다. 하지만 컨트롤을 탭 페이지에 넣고 이름을 지정하는 데 문제가 있습니다. –

+0

나는이 tabPage1.Controls.Add (새로운 TextBox())를 시도했다; 작동합니다. tabcontrol에 컨트롤을 추가하지 않도록하십시오! 탭 페이지를 선택해야합니다! TabControl에서는 새로운 탭 페이지를 추가하기 만하면됩니다! ;) – Sebi

0

컨트롤을 탭 페이지에 추가하려면 tabe 페이지의 내용에 대한 고유 한 UserControl을 만드는 것이 좋습니다.

필요에 따라 UserControl의 컨트롤을 정렬합니다 (DockStyle, Anchor ...).

새 탭을 만들 때 새로운 UserControl을 만들고 Sebi에서 언급 한 것처럼 탭 페이지에 추가하면됩니다. 또한 DockStyle을 Fill으로 설정해야합니다. 그렇게 트릭을해야합니다.

관련 문제