2009-02-04 9 views
0

패널로 맞춤 컨트롤을 만들고 있습니다. 드래그 앤 드롭으로 컨트롤을 MouseDown 이벤트에 구현했습니다. 그러나 사용자에게 약간의 피드백을주기 위해 드래그를 시작할 때 반응해야합니다. 그래서 MouseDown에서도 색상을 바꿉니다. 그런 다음 MouseUp 이벤트에서 다시 변경하려고합니다.MouseUp 이벤트가 중단 되었습니까?

내 컨트롤이 VS2008에 설치되지 않았지만 런타임에 인스턴스화 한 클래스 만 작성했습니다. (얼마나 많은 정보가 필요한지 미리 알지 못합니다.) 이제, 내 컨트롤은 드래그 할 수 있도록 MouseDown 이벤트를 노출합니다. 부모 응용 프로그램에서이 이벤트를 구독하여 실제로 드래그 앤 드롭을 수행하면 내 컨트롤이 해당 MouseUp 이벤트에서 다시 그려지지 않습니다! 실제로 MouseUp은 호출되지 않습니다. 반면, 부모 앱의 이벤트에 가입하지 않으면 의도 한대로 작동합니다.

무슨 일 이니? MouseUp 이벤트가 내 컨트롤에서 절대 실행되지 않도록 부모가 흐름을 방해합니까? 이 문제를 어떻게 해결할 수 있습니까?

+0

관련 코드를 게시 할 수 있습니까? – hmcclungiii

+0

나는 할 수 있을지 모르지만 조금 복잡하다고 느낍니다. 먼저 답변을 더 기다리고 코드를 격리 할 수 ​​있는지 확인하겠습니다. –

답변

0

mousedown 이벤트의 사용자 정의 컨트롤에서 마우스를 캡처합니까? mousedown에서 캡처하고 마우스 위로 캡처를 해제하십시오.

+0

캡처로 무엇을 의미합니까? –

2

난 당신이 윈도우 폼이나 WPF를 사용하는 경우 잘 모르겠지만, 여기에 윈도우 형태로 무슨 뜻인지입니다 :에) WPF에서

 
public class DerivedPanel : Panel 
{ 
    protected override void OnMouseDown(MouseEventArgs e) 
    { 
     base.OnMouseDown(e); 
     Capture = true; 
    } 

    protected override void OnMouseUp(MouseEventArgs e) 
    { 
     base.OnMouseUp(e); 
     Capture = false; 
     // Change your color or whatever here 
    } 
} 

는 CaptureMouse()와 ReleaseMouseCapture (두 가지 방법이 있습니다 똑같은 일을하십시오. 컨트롤이 마우스를 캡처하면 커서가 컨트롤 위에 있지 않더라도 마우스 이벤트를받습니다. 이로 인해 문제가 발생할 수 있습니다. MSDN Article

+0

정상적인 Windows 형식입니다. 답변 해 주셔서 감사합니다. 주말에 시도해 보겠습니다. 성공하지 못하면 내가하는 일에 대한 코드를 게시 할 것입니다. –

관련 문제