C# Winform 使用控件移动窗口
前置
将窗口的FormBorderStyle属性设置为FixedSingle
为窗口添加一个Panel控件,并将Dock属性设置为Top
移动
private Point point; private void panel1_MouseDown(object sender, MouseEventArgs e) { point = e.Location; } private void panel1_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Point pt = Control.MousePosition; pt.Offset(-point.X, -point.Y); Location = pt; } }
最小化
this.WindowState = FormWindowState.Minimized; this.Invalidate();
最大化
this.WindowState = WindowState == FormWindowState.Maximized ? FormWindowState.Normal : FormWindowState.Maximized; this.Invalidate();
关闭
this.Close();
绘制边框
protected override void OnPaintBackground(PaintEventArgs e) { base.OnPaintBackground(e); Rectangle rect = new Rectangle(0, 0, Width, Height); ControlPaint.DrawBorder3D(e.Graphics, rect,Border3DStyle.Flat); }
拖动窗体移动
[System.Runtime.InteropServices.DllImport("user32.dll")] private static extern IntPtr SendMessage(IntPtr hWnd, int msg, int wparam, int lparam);
private void Form1_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { Capture = false; SendMessage((sender as Control).Handle, 161, 2, 0); } }
转载请注明出处。