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);
}
}转载请注明出处。