-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;
}
这个偏移不解决这个问题,但什么抛出我要循环就是为什么窗体的位置偏移时,我首先移动它通过它的客户区?
谢谢!