C# 无边框模式拖动 最大化 最小化 关闭 最大化不遮挡任务栏

一、无边框模式拖动

private Point mPoint;
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
    mPoint = new Point(e.X, e.Y);
}

private void panel1_MouseMove(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        this.Location = new Point(this.Location.X + e.X - mPoint.X, this.Location.Y + e.Y - mPoint.Y);
    }
}

在需要进行鼠标按下拖动的控件或窗体上增加对应的MouseDown.MouseMove事件处理即可
本代码示例以panel1为无边框窗体顶部标题栏,因此对应事件均为panel1的事件

二、无边框模式最大化 最小化 关闭处理

//处理关闭按钮事件
private void btn_close_Click(object sender, EventArgs e)
{
    Environment.Exit(0);
}
//处理最小化按钮事件
private void btn_min_Click(object sender, EventArgs e)
{
    this.WindowState = FormWindowState.Minimized;
}
//处理最大化按钮事件
//同步变更最大化按钮图片
private void btn_max_Click(object sender, EventArgs e)
{
    if (this.WindowState == FormWindowState.Normal)
    {
        this.WindowState = FormWindowState.Maximized;
        btn_max.Image = global::GoBang.Properties.Resources.normal;
    }
    else if (this.WindowState == FormWindowState.Maximized)
    {
        this.WindowState = FormWindowState.Normal;
        btn_max.Image = global::GoBang.Properties.Resources.max;
    }
}

三、无边框模式最大化不遮挡任务栏

    this.MaximizedBounds = System.Windows.Forms.Screen.PrimaryScreen.WorkingArea;

在对应窗体的构造函数中,初始化控件之后增加此行代码,来避免无边框模式下最大化窗口遮挡任务栏

posted @ 2022-04-10 21:14  Darkic  阅读(573)  评论(0)    收藏  举报