2015-05-17 22 views
-2

每当我通过客户端区域中的某个组件(即标签)移动Windows窗体时,最终会出现一个奇怪的鼠标偏移,其中窗体不会直观地保留在光标下。它仍然会根据我在屏幕上的鼠标位置而移动,但它会大大偏移光标位置的东南部。WinForm在客户端区域移动时不能顺利拖动

我不得不指定我自己的负偏移来抵消这个偏移;我的代码如下:

private void component_MouseDown(object sender, MouseEventArgs e) 
{ 
    if (sender is Label) 
    { 
     if (e.Button == MouseButtons.Left) 
     { 
      mouseLoc = new Point(-(e.X + OFFSET_X), -(e.Y + OFFSET_Y)); 
      isMouseDown = true; 
     } 
    } 
} 

private void component_MouseMove(object sender, MouseEventArgs e) 
{ 
    if (isTitleLabelMouseDown) 
    { 
     Point p = Control.MousePosition; 
     p.Offset(mouseLoc); 
     Location = p; 
    } 
} 

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

这个偏移不解决这个问题,但什么抛出我要循环就是为什么窗体的位置偏移时,我首先移动它通过它的客户区?

谢谢!

回答