2014-02-07 2 views
0

"자르기 도구"를 만들고 있는데, 나는 드래그 할 수있는 2 개의 버튼이있는 패널을 만들어야합니다. 어떻게 내가 그 패널을 드래그 할 수 있습니다 :패널을 드래그 가능하게 만들기

this.MouseDown += new MouseEventHandler(onRightClickMouse); 
private void onRightClickMouse(object sender, MouseEventArgs e) 
{ 
     if (e.Button == MouseButtons.Right) 
     { 
      Point localMouseClickPoint = new Point(e.X, e.Y); 
      panel1.Location = localMouseClickPoint; 
     } 
} 
내 질문

...

은 지금까지 나는 이런 식으로 뭔가를 시도했습니다,하지만 난 마우스 오른쪽 버튼을 클릭했을 때 위치 변경 이벤트는 발생 내 양식에? (패널을 클릭 한 다음 위치로 드래그한다는 의미입니다). 이 같은

답변

1

시도 뭔가 :

delegate void updatePanelCallback(); 
panel1.MouseDown += new MouseEventHandler(onMouseDown); 
panel1.MouseUp += new MouseEventHandler(onMouseUp); 
System.Timers.Timer runTimer = new System.Timers.Timer(100); 
runTimer.Elapsed += new ElapsedEventHandler(onTimerElapsed); 
private void onMouseDown(object sender, MouseEventArgs e) 
{ 
    if (e.Button != MouseButtons.Right) 
    { 
     return; 
    } 
    runTimer.Enabled = false; 
} 
private void onMouseUp(object sender, MouseEventArgs e) 
{ 
    runTimer.Enabled = false; 
} 
public void updatePanelLocation() 
{ 
    if (this.InvokeRequired) 
    { 
     this.Invoke(new updatePanelCallback(updatePanelLocation), new object[] {}); 
    } 
    else 
    { 
     Cursor curs = new Cursor(Cursor.Current.Handle); 
     panel1.Location = curs.Position; 
    } 
} 
private void onTimerElapsed(object source, ElapsedEventArgs e) 
{ 
    updatePanelLocation(); 
} 
+0

나는 이미 왼쪽 버튼을위한 기능을 가지고 있습니다 ... (자를 영역 선택). – user3281950

+1

@ user3281950 그래서, 무엇을 묻고 있습니까? 마우스 오른쪽 버튼으로 만 작동하는 이유는 무엇입니까? –

+0

아니, 마우스를 클릭 한 후 패널을 드래그하는 방법 ... 마우스 오른쪽 버튼 클릭이 발생할 때 패널 위치를 직접 변경하지 마십시오. – user3281950

0

당신은 MouseDown 이벤트에 작업을 준비하고 MouseUp에 마무리, 두 단계로 뭔가를 시도 할 수 있습니다.

관련 문제