没有标题栏的窗体的移动算法?

黑暗的救赎 2003-09-14 10:05:36
在编写一个没有标题栏窗体时:
我想用鼠标移动它,但编写的程序在移动时不是很理想?
请问大侠们是怎么处理这样的问题的?
非常感谢!!!!
...全文
26 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnhgj 2003-09-14
  • 打赏
  • 举报
回复
拖动是有虚框

[DllImport("user32.dll",EntryPoint="SendMessage")]
public static extern int SendMessage(int hWnd,int wMsg,int wParam,int lParam);
[DllImport("user32.dll",EntryPoint="ReleaseCapture")]
public static extern int ReleaseCapture();
public const int WM_SysCommand = 0x0112;
public const int SC_MOVE = 0xF012;

private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle.ToInt32(),WM_SysCommand,SC_MOVE,0);
}


拖动时没虚框

public static int MouseX;
public static int MouseY;
public static bool isMove;
public static int CurrX;
public static int CurrY;

private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
isMove = true;
MouseX = e.X;
MouseY = e.Y;
}
}

private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (isMove == true)
{
CurrX = Form1.ActiveForm.Left - MouseX + e.X;
CurrY = Form1.ActiveForm.Top - MouseY + e.Y;
Form1.ActiveForm.Left = CurrX;
Form1.ActiveForm.Top = CurrY;
}
}

private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left){isMove = false;}
}

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧