2012-11-09 4 views
3

.NET CF 프레임 워크를 사용하여 응용 프로그램을 작성 중이며 사용자에게 사용자 지정 대화 상자를 제시하고자하는 상황이있었습니다.UserControl에서 Form을 인스턴스화하는 것은 나쁜 습관입니까?

내 솔루션은 선택 사항과 버튼을위한 라디오 버튼이있는 간단한 양식을 만드는 것이 었습니다. 이 버튼을 클릭하면 선택한 라디오 버튼 값이 공용 속성에 저장되고 양식이 닫힙니다.

UserControl은 폼에서 ShowDialog를 호출 한 후 공용 속성을 검사하여 사용자가 선택한 옵션을 확인합니다.

이것은 완벽하게 작동했습니다. 나는 이것이 나쁜 습관인지, 그리고 내가 어떻게 든 문제를 일으키고 있는지 궁금해하고있다. UserControl이 Form을 생성해야한다는 것이 이상하게 보입니다.

UserControl 내에서 사용자 지정 대화 상자를 만드는 더 좋은 방법이 있습니까?

답변

1

아무 문제가 없습니다. UserControl에서 MessageBox.Show()을 호출하는 것과 본질적으로 같습니다.

그리고 예, 공개 속성으로 결과에 액세스하는 것은 그것을 수행하는 방법입니다.

대화가 될 것 같습니까? '종료'옵션이 여러 개있는 경우 (예 : 확인, 취소 등) DialogResult을 사용해야합니다.

+1

아이디어를 제공해 주셔서 감사합니다. DialogResult를 사용하여 다른 결과를 반환하는 실험을 해본 적이 있습니다. 내가하는 일에는 필요 없어. 선택이 끝난 후 양식을 닫을 수있는 버튼이 하나뿐입니다. 그러나 원한다면 여러 개의 버튼을 사용할 수 있고 필요한 경우 다른 DialogResult를 반환 할 수 있다는 것을 알고있는 것이 좋습니다. – nitewulf50

1

짧은 대답 : 아니요, 문제가 발생하지 않아야합니다.

긴 대답 : 응용 프로그램이 커질수록 UserControl에서 직접 양식을 여는 것과 같은 일을하면 스파게티 같은 코드가 생길 수 있습니다. 몇 천 줄의 코드보다 큰 응용 프로그램을 작성하는 경우 Form 및 UserControl 코드 파일은 일반적으로 매우 비어 있어야합니다. 비즈니스 로직을 포함하지 않아야하며 UI 로직도 포함하지 않는 것이 바람직합니다. 이를 달성하는 방법은 Passive View과 같은 패턴을보십시오.

관련 문제