2012-04-03 1 views
0

내 프로젝트에는 화면에 포인트 세트를 표시하는 여러 컨트롤이 있습니다. 이러한 모든 컨트롤에 대해 "올가미 선택"기능을 제공하고 싶습니다. 이렇게하려면 마우스 움직임을 추적하고, 올가미를 표시하고, 올가미가 닫힐 때 이벤트를 올리는 등의 "올가미"라는 클래스를 작성했습니다. 지금까지 그렇게 좋았습니다. 그러나, 올가미를 사용하기 위해, 나는 다음과 같은 코드를 작성해야합니다 :구성 요소를 통해 컨트롤에 사용자 정의 UI 비헤이비어 추가하기

public partial class MyControl : UserControl { 

    private Lasso lasso; 

    public MyControl() { 
     InitializeComponent(); 

     lasso = new Lasso(); 
     lasso.HookEvents(this); 
    } 
} 

은 "lasso.HookEvents"방법은 호스트 컨트롤의 마우스 이벤트에 올가미를 접선을 담당한다.

내가하고 싶은 것은 어떻게 든 사람들이 디자인 타임에 도구 상자에서 "올가미"구성 요소를 자신의 UserControl 또는 Form으로 끌어와 코드 자체를 작성하는 것에 대해 걱정할 필요가 없다는 것입니다. 올가미는 마술처럼 "그냥 일해야"합니다. 그렇게 할 수있는 방법이 있습니까? Component에서 Lasso 클래스를 확장하려고했지만 Designer에 "lasso.HookEvents (this)"호출을 자동으로 생성하는 방법을 알 수 없습니다.

답변

0

가능하면 Lasso 개체에서 마우스 이벤트를 캡처하기 만하면됩니다. 그게 가능하지 않거나 작동하지 않는 경우 : Lasso 클래스에서 Loaded 이벤트에 핸들러를 추가하고 핸들러에서 this.HookEvents(this.Parent);을 실행하십시오.

+0

불행히도 Lasso 클래스는 Control이 아닌 Component를 확장합니다. 따라서 "로드 됨"이벤트가 없습니다. 올가미가 자체 UI를 가지고 있지 않기 때문에 컨트롤을 확장하고 싶지 않습니다. 부모를위한 UI 동작 만 제공합니다. – Bugmaster