0

분할 된 패널의 패널과 마찬가지로 (이 문제와 관련되지 않은 다양한 이유로) 디자이너에 Windows Forms 사용자 컨트롤이 표시됩니다. 대부분의 것은 컨트롤을 드래그하는 것 외에는 훌륭하게 작동합니다. 자식 컨트롤은 사용자 정의 컨트롤에 의해 만들어지며 새 자식을 허용하지 않습니다. 미리 정의 된 하위의 속성 만 편집 할 수 있습니다.복합 사용자 컨트롤이 소유 한 자식 컨트롤의 디자인 타임 이동

컨트롤을 사용하면 자식 컨트롤을 디자인 할 수 있으므로 디자이너에서도 선택할 수 있습니다 (좋은 점이고이를 변경하고 싶지는 않습니다). 그러나 개별적으로 이동해서는 안되며 개별적으로 이동해서도 안됩니다.

나는 자식 컨트롤을 디자이너에서 드래그 할 때 드래그가 실제로 부모를 움직입니다.

나는 컨트롤 디자이너에 관한 문서를 훑어 보았지만 그다지 간단하지 않거나 분명하지 않은 것은 아무것도 없었다.

답변

0

이 시도하고 무슨 말해 :

  1. 이 쓰기이 디자이너 내에서 기본 UserControl을 디자이너 클래스에서 파생 새로운 ControlDesigner 클래스 (UserControlDocumentDesigner 같아요)
  2. 정의의 UserControl 클래스

  3. 확장 초기화 메서드 내부에서 재정의 :

    IComponentChangeService changeService = this.GetService (typeof (IComponentChangeService)); changeService.ComponentRemoved + = 새 ComponentEventHandler (changeService_ComponentRemoved);

이제 컨트롤을 제거 할 때 일어나는 일에 대한 논리를 배치 할 수 있습니다. 사용자 컨트롤에서 제거 된 컨트롤 만이이 이벤트를 발생시키는 것은 아닙니다. 이를 확인해야하며 디자인 타임에 제대로 작동한다고 생각하기 위해 ComponentChanging 및 ComponentChanged 이벤트를 잊지 않아도됩니다.

+0

감사합니다.하지만 상황을 조금 잘못 이해했을 수도 있습니다. :) 자식 컨트롤은 부모 컨트롤에 의해 만들어지며 컨트롤은 자식 컨트롤 추가를 지원하지 않습니다. 자식 컨트롤의 속성 만 편집 할 수 있습니다. 나는 Changed/Removed 이벤트를 도청하는 것이 어떻게 여기에서 도움이 될지 잘 알지 못합니다. – Rytmis

+0

@Rytmis : 디자이너에서 자식 컨트롤을 드래그하면 드래그가 실제로 부모를 움직입니다. -> 부모 컨트롤에서 자식 컨트롤을 제거하고 ComponentRemoved/ComponentAdded 이벤트에 의해 감지되는 다른 컨트롤에 추가 할 때마다 부모 컨트롤도 함께 이동합니다. –