using System.Runtime.InteropServices;
namespace System.Windows.Forms
{
class moveform
{
#region 变量声明
private bool isMouse = false; //记录是否按下
private int mousedownleft = 0;
private int mousedowntop = 0;
public System.Windows.Forms.Form form1 = null;
#endregion
///
/// 移动窗口类不使用api移动
///
/// System.Windows.Forms.Form
/// 在窗体的构造函数里 moveform mf=new moveform(this)
public moveform( System.Windows.Forms.Form winform)
{
form1 = winform;
if (form1==null)
{
MessageBox.Show(" public System.Windows.Forms.Form对象没有实例化");
return;
}
else
{
form1.MouseDown+=new MouseEventHandler(MouseDownEvent);
form1.MouseMove+=new MouseEventHandler(MouseMoveEvent);
form1.MouseUp+=new MouseEventHandler(MouseUpEvent);
}
}
#region win32 api 移动窗体
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
public const int WM_SYSCOMMAND = 0x0112;
public const int SC_MOVE = 0xF010;
public const int HTCAPTION = 0x0002;
///
/// 使用api移动
///
///
///
//在窗体的构造函数里 moveform mf=new moveform(this,true)
public moveform(System.Windows.Forms.Form form1s,bool win32api)
{
form1 = form1s;
if (form1==null)
{
MessageBox.Show(" public System.Windows.Forms.Form对象没有实例化");
return;
}
else
{
form1.MouseDown += new MouseEventHandler(WinApiMoveEvent);
}
}
private void WinApiMoveEvent(object sender, System.Windows.Forms.MouseEventArgs e)
{
ReleaseCapture();
SendMessage(form1.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0);
}
#endregion
private void MouseDownEvent(object sender, System.Windows.Forms.MouseEventArgs e)
{
isMouse = true;
mousedownleft = GetMouseXY().X - form1.Left;
mousedowntop = GetMouseXY().Y - form1.Top;
}
private void MouseMoveEvent(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (isMouse==false)
{
return;
}
form1.Left = GetMouseXY().X - mousedownleft;
form1.Top = GetMouseXY().Y - mousedowntop;
}
private void MouseUpEvent(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (isMouse==true) //如果还是真
{
isMouse = false;
}
}
///
/// 获取鼠标坐标
///
///
private System.Drawing.Point GetMouseXY()
{
System.Drawing.Point xy = new System.Drawing.Point(System.Windows.Forms.Cursor.Position.X, System.Windows.Forms.Cursor.Position.Y);
return xy;
}
}
}
http://www.cm1212.com
演示代码下载 点击打开链接