2009-07-30 3 views
0

이것은 내 시나리오입니다 ... 각 탭마다 다양한 필드가있는 winForm tabControl이 있습니다 (각 탭마다 필드가 다릅니다). 사용자가 '생성'버튼을 클릭하면 TabControl의 탭에서 컨트롤을 전달하여 호출 된 함수가 전달 된 컨트롤의 정보를 기반으로 전자 메일을 만들 수 있습니다. 각 탭은 다른 전자 메일 템플릿입니다. 이 메소드는 4 개의 다른 버튼에서 호출 할 수 있습니다. 각 버튼은 다른 tabControl 페이지에 있고 각 tabControl에는 다른 필드가 있습니다.C# WinForm; 컨트롤 그룹을 다른 클래스에 전달

내가 겪고있는 문제는 이러한 컨트롤을 호출하거나 전달할 수있는 적절한 방법을 찾아 내지 못한다는 것입니다. 이후 어떤 탭 컨트롤을 다른 탭을 컨트롤을 가지고 있기 때문에 런타임에 나는이 컨트롤을 받아들이는 추상 메서드를 만들려고 노력하고 때까지 어떤 tabControl 버튼을 누르면 알 수 없기 때문에.

아이디어가 있으십니까? 다른 사람이 언급 한 바와 같이

답변

1

, 당신은 속임수와 신속하고 더러운 수정에 대한

tabControl.Controls 

를 사용하여 시도 할 수 있습니다.

앞으로 더 발전 할 수있는 무언가를 원할뿐 아니라 더 나은 설계 관행을 보여줄 수 있기를 바랍니다. 전자 메일의 양식 필드를 모두 보유하는 EmailUserControlUserControl을 작성하십시오. 모든 개별 필드 대신 해당 사용자 정의 컨트롤을 탭에 배치하십시오. 그런 다음 모든 필드를 고려한 원하는 전자 메일을 생성하는 메서드를 사용자 정의 컨트롤에 제공하면 실제 전자 메일을 전달할 수 있습니다. 그러면 실제 전자 메일을 전달할 수 있습니다.

물론이 디자인에 추가 개선점이 있지만 이것은 발을 젖게하고 좀 더 나은 것을 시도 할 수있는 좋은 기회입니다. UserControl의 아이디어에 익숙해지면 컨트롤의 디자인을 직접 개선 할 수있는 추가 기회를 얻을 수 있습니다. :)

+0

나는 디자인면에서 혼란 스러웠다. 나는 말하기 위해 '클래스'탭의 역할을 할 각 탭에 대한 클래스를 만들었습니다. 각 탭에 대한 사용자 정의 컨트롤을 만들고 해당 사용자 정의 컨트롤의 클래스가 방금 설명한 클래스로 작동하도록 결정했습니다. 도와 주셔서 감사합니다! – user141594

+0

굉장! 다행히 도울 수있어. :) –