2010-08-06 3 views
0

Visual Studio 속성 표와 비슷한 사용자 지정 Windows Forms 기반 컨트롤을 구현하고 싶습니다. 이것은 훨씬 간단합니다. 클라이언트 지정 UITypeEditor 구현을 호출하여 속성 그리드에서 내부 편집을 트리거하는 데 사용되는 IWindowsFormsEditorService 인터페이스의 동작을 복제하는 것이 이상적입니다.C#에서 IWindowsFormsEditorService를 구현하는 방법은 무엇입니까? a.k.a Windows Forms에서 내부 편집 시뮬레이션

보다 간단한 예로서, 셀에서 시뮬레이트 된 ComboBox (또는 드롭 다운 목록)를 통해 값을 편집하기 만하면됩니다. 비주얼 스튜디오는 실제 ComboBox 컨트롤을 사용합니다. 오히려 Visual Studio는 셀의 오른쪽에 작은 드롭 다운 버튼을 표시합니다.이 버튼을 누르면 콤보 상자를 드롭 다운하는 것과 같은 방식으로 배치 된 간단한 ListBox 컨트롤의 표시 및 작업이 트리거됩니다.

나는 이런 일이 발생하기 때문에 편집이 진행 중일 때 나는 어떻게 든 내 자신의 모달 메시지 루프를 구현해야한다는 것을 알고있다. 그러나, 나는이 메시지 루프를 넣는 방법과 장소를 이해하는데 약간의 문제가있다. 내 사용자 정의 컨트롤의 경계를 넘어 펼쳐지는 드롭 다운 목록에 문제가 있습니다.

저는 COM과 C++에 매우 능숙하지만 순수한 C# 기반 솔루션을 구현하고 싶습니다.

간단한 시뮬레이션 된 CombBox In-Place 편집을 사용자 정의 격자 형 컨트롤에 구현하는 좋은 방법은 무엇입니까?

답변

0

모달 편집 환경 (목록 상자 포함)에 대해 별도의 양식을 작성한 다음 ShowDialog()을 호출하여 표시해야합니다.

ShowDialog() 메서드는 모달 메시지 루프를 수행합니다.
별도의 양식이므로 상위 컨트롤의 크기에 문제가 없습니다.