2017-05-01 1 views
0

저는 폼 몸체에서 몇 가지를 드래그하고자하는 MenuStrip을가집니다. (폼의 배경색이 바뀌는 등의 일이 일어납니다.) MouseDown 이벤트를 처리하고 있지만 그 일은 ToolStripMenu의 옵션을 클릭하면 동일한 작업이 수행됩니다 (양식의 배경색이 변경되는 등). 내가 원하는 것은 어떻게 든 MouseClickMouseDown에서 분리하는 것입니다. 더 정확하게는 MenuStrip 옵션 중 하나를 클릭하면 아무 일도 일어나지 않습니다.Windows에서 마우스 클릭과 마우스 다운 이벤트를 혼동하지 않는 방법은 무엇입니까?

클릭하면 MouseDown 이벤트가 발생합니다. 마우스 커서가 움직이지 않으면 무시하고 싶습니다.

private void salmonToolStripMenuItem_MouseDown(object sender, MouseEventArgs e) 
{ 
    //gets the cursor position at the moment when mouse down is activated 
    p1M = Cursor.Position.X; 
    p2M = Cursor.Position.Y; 
    //miscare shows if the mouse moved 
    if (miscare == true) 
    { 
     //do things 
    } 
} 

private void Rezervare1_DragEnter(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Copy; 
} 

private void salmonToolStripMenuItem_MouseUp(object sender, MouseEventArgs e) 
{  
    //gets the cursor position to see if it moved 
    p1m = Cursor.Position.X; 
    p2m = Cursor.Position.Y; 
    if (p1M != p1m || p2M != p2m) 
    { 
     miscare = true;//it means the cursor moved 
    } 
    else miscare = false; 
} 
+1

코드를 제출해야합니다. –

+0

완료했습니다. 죄송합니다. – Patricia

답변

0

로직을 마우스 이동시 발생 시키려면 MouseMove!

bool isMouseDown = false; 

private void salmonToolStripMenuItem_MouseDown(object sender, MouseEventArgs e) 
{ 
    isMouseDown = true; 
} 

private void salmonToolStripMenuItem_MouseUp(object sender, MouseEventArgs e) 
{ 
    isMouseDown = false; 
} 

private void salmonToolStripMenuItem_MouseMove(object sender, MouseEventArgs e) 
{ 
    if(isMouseDown) 
    { 
     //Do your thing 
    } 
} 

또한 당신이 초점을 잃고 형태 나 형식의 경계의 외부를 끌어 사용자와 같은 것들로 공격 할 수있는 몇 가지 이상한 가장자리 경우가 있습니다주의. 필요에 따라 알아야 할 것이 있습니다.

관련 문제