2011-10-14 2 views
1

내 맞춤 컨트롤 중 하나를 만드는 데 문제가 있습니다.디자이너에서 usercontrols 하위를 어떻게 클릭합니까?

내가 가진 것은 usercontrol 내의 목록 상자이며 디자이너에서 여전히 목록 항목을 클릭 할 수 있어야합니다. 이것은 tabcontrol과 같은 역할을합니다.

저는 usercontrols를 많이 다루지는 않았지만 성공하지 못한 오버라이드 이벤트를 잡으려고했습니다.

protected override void OnClick(EventArgs e) 
    { 
     if (DesignMode) 
     { 
      InvokeOnClick(listBox1, e); 
     } 
     base.OnClick(e); 
    } 

웹상에서 아무것도 찾을 수 없었습니다. 어떻게 할 수 있습니까? 사전에

감사합니다 =)

+2

당신이 WinForms에 대해 이야기하고 있다고 가정하겠습니다.하지만 명확히하고 싶을 수도 있습니다. 왜 이것이 유용 할 지 상상하기가 힘듭니다. 왜이 행동이 필요한지 설명해 주시겠습니까? – codeConcussion

+0

나는 목록을 통해 탭을보고 탭 컨트롤의 탭을 변경할 수있는 탭 콘트롤을위한 보조 사용자 콘트롤을 만들었다. 바인딩 소스 등을 사용합니다. Visual Studio의 옵션 창과 비슷합니다. –

답변

2

@Bradley : 감사 올바른 방향으로 당신은 그 다음, ControlDesigner 클래스를 작성하여 UserControl을에 [Designer(...)] 속성에서 사용해야합니다

나를 가리키는합니다. 실제 클릭에 대한 http://msdn.microsoft.com/en-us/library/sycctd1z(v=VS.90).aspx

:

여기의 예를 참조하십시오

http://msdn.microsoft.com/en-us/library/system.windows.forms.design.controldesigner.gethittest(v=VS.90).aspx

ControlDesigner는 protected bool GetHitTest(Point point) 방법이있다 - 당신은 당신의 ControlDesigner에서이를 구현하고 원하는 경우 true를 반환 할 수 있습니다 컨트롤을 사용하여 화면의 클릭 위치를 기반으로 클릭을 처리합니다.

+0

고마워, 정말 올바른 방향으로 나를 이끌었 어! 일단 내가 실천을 구현하면 컨트롤의 모든 자식에 대해 클릭 이벤트를받을 수있었습니다. 그런 다음 부울 DesignMode를 사용하여 디자인 모드에 있는지 확인하고 listitem의 인덱스를 얻었습니다. 감사! –

0

당신은 멀리 사용자 지정 컨트롤에서 MouseDown 이벤트를 잡기와 내부 제어에 전달하기로받을 수 있습니다. MouseDown이 디자인 모드에서 어떻게 동작하는지 잘 모르겠습니다.

+0

제가 시도한 바가 있지만, usercontrols를 사용하여 제대로 작동하는지에 대해서는 충분히 알지 못합니다. –

1

원하는 동작을 얻으려면 사용자 지정 디자이너를 구현해야하며이 작업을 수행하는 방법을 설명하는 링크가 있습니다.

http://social.msdn.microsoft.com/Forums/pl-PL/winforms/thread/0b6ed0cb-907c-4733-b245-ae5d0b0e6606

+0

도움 주셔서 감사합니다! 나는 오직 한 가지 대답으로 승자를 수여 할 수 있었지만 올바른 방법으로 sq33G를 가리켜 주셔서 감사합니다. 나는 당신이 가장 적은 것을 말 했어요. –

관련 문제