更新时间)2021年5月21日 仓库温控系统(Winform) 19 窗体拖动功能实现"/>
(更新时间)2021年5月21日 仓库温控系统(Winform) 19 窗体拖动功能实现
Point point = new Point();
bool isMove = false;
private void panelTop_MouseDown(object sender, MouseEventArgs e)
{point = e.Location;//按住的点isMove = true;}private void panelTop_MouseMove(object sender, MouseEventArgs e)
{if(e.Button==MouseButtons.Left&&isMove){Point pointNew = e.Location;//按住的点拖动到的位置Point fPointNew = new Point(pointNew.X - point.X, pointNew.Y - point.Y);//相对于原来起点的距离点的描述this.Location += new Size(fPointNew);}
}const int WM_NCHITTEST = 0x0084;// 移动鼠标
const int HTLEFT = 10;
const int HTRIGHT = 11;
const int HTTOP = 12;
const int HTTOPLEFT = 13;
const int HTTOPRIGHT = 14;
const int HTBOTTOM = 15;
const int HTBOTTOMLEFT = 0x10;
const int HTBOTTOMRIGHT = 17;protected override void WndProc(ref Message m)
{base.WndProc(ref m);switch (m.Msg){case WM_NCHITTEST:Point vPoint = new Point((int)m.LParam & 0xFFFF,(int)m.LParam >> 16 & 0xFFFF);vPoint = PointToClient(vPoint);if (vPoint.X <= 5)if (vPoint.Y <= 5)m.Result = (IntPtr)HTTOPLEFT;else if (vPoint.Y >= ClientSize.Height - 5)m.Result = (IntPtr)HTBOTTOMLEFT;else m.Result = (IntPtr)HTLEFT;else if (vPoint.X >= ClientSize.Width - 5)if (vPoint.Y <= 5)m.Result = (IntPtr)HTTOPRIGHT;else if (vPoint.Y >= ClientSize.Height - 5)m.Result = (IntPtr)HTBOTTOMRIGHT;else m.Result = (IntPtr)HTRIGHT;else if (vPoint.Y <= 5)m.Result = (IntPtr)HTTOP;else if (vPoint.Y >= ClientSize.Height - 5)m.Result = (IntPtr)HTBOTTOM;break;}
}/// <summary>
/// 面板中的页面尺寸与面板的尺寸同步---面板中Form页自适应处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panelPage_SizeChanged(object sender, EventArgs e)
{foreach(Control c in panelPage.Controls){Form f = c as Form;f.WindowState = FormWindowState.Normal;f.SuspendLayout();f.Size = panelPage.Size;//DataGridView 闪烁--- 先挂起 ,,,再恢复f.ResumeLayout();f.WindowState = FormWindowState.Maximized;}
}
更多推荐
(更新时间)2021年5月21日 仓库温控系统(Winform) 19 窗体拖动功能实现
发布评论