Winform问题,拖动工作区来移动窗体
一般窗体都是通过移动标题栏来移动位置,以下代码要实现拖动工作区来移动窗体
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace MoveForm
{
public partial class Form1 : Form
{
Point myPoint;
public Form1()
{
InitializeComponent();
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
myPoint = Control.MousePosition;
myPoint.Offset(myPoint.X, myPoint.Y);
this.DesktopLocation = myPoint;
}
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
myPoint = new Point(-e.X, -e.Y);
}
}
}
运行后 我拖动窗体,但鼠标总不位于窗体上,一点窗体就自动往下方走。反正难表达,希望高手运行下,给我指出代码不对的地方
------解决方案--------------------
方案3:楼主的想法。(优点:修改一下可以拖动没有句柄的控件等)
C# code
Point downPoint;
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
downPoint = new Point(e.X, e.Y);
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
Location = new Point(Location.X + e.X - downPoint.X,
Location.Y + e.Y - downPoint.Y);
}
}