2010-03-15 1 views
1

사용자가 내 UserControl 내에서 클릭하고 왼쪽/오른쪽으로 드래그하여 확대/축소 할 수 있도록하고 싶습니다. 그러나 실제 컨트롤의 경계로 드래그하지 않기를 바랍니다. 마우스 클릭이 해제 될 때까지 컨트롤 및 폼 외부에서 마우스 위치를 추적하는 올바른 방법은 어떤 종류의 이벤트 또는 전략입니까?어떻게 컨트롤을 클릭하고 끌어서 드래그 (드래그 앤 드롭)하지 않고 단추를 클릭하는 동안 이벤트를 계속 따라갈 수 있습니까?

도움이나 조언을 미리 보내 주셔서 감사합니다.

답변

3

MouseDown 이벤트 처리기에서 Capture 속성을 true로 설정하십시오. 마우스가 클라이언트 영역을 떠난 경우에도 MouseMove 메시지를 계속 가져옵니다.

public partial class UserControl1 : UserControl { 
    public UserControl1() { 
     InitializeComponent(); 
    } 
    protected override void OnMouseDown(MouseEventArgs e) { 
     if (e.Button == MouseButtons.Left) this.Capture = true; 
     base.OnMouseDown(e); 
    } 
    protected override void OnMouseMove(MouseEventArgs e) { 
     if (e.Button == MouseButtons.Left) { 
     // Your dragging logic here... 
     Console.WriteLine(e.Location); 
     } 
     base.OnMouseMove(e); 
    } 
    } 
+0

브릴리언트. 고맙습니다. 고맙습니다. 더글라스. 감사합니다. –