C# 窗体的最大化、最小化、关闭按钮的自定义

C# 窗体的最大化、最小化、关闭按钮的自定义

1 创建一个窗体项目(本项目是在VS2015中进行创建) 2 将窗体的FormBorderStyle属性设置为None,设置后窗体的标题栏将消失不显示 3 添加2个panel空间,如下图布置,上面一个panel作为标题栏,下面一个panel作为窗体内容显示区 C# 窗体的最大化、最小化、关闭按钮的自定义C# 窗体的最大化、最小化、关闭按钮的自定义 4 添加3个pictureBox空间,作为最大化、最小化、关闭按钮的容器 C# 窗体的最大化、最小化、关闭按钮的自定义C# 窗体的最大化、最小化、关闭按钮的自定义 5 准备最大化、最小化、关闭按钮的图片,如果需要边框也需要提前准备 C# 窗体的最大化、最小化、关闭按钮的自定义 6 向项目中添加资源文件 右击-->添加-->新项目-->资源文件-->添加资源-->图片 或者可以通过向空间插入的图片的方法添加 7 编写代码 7.1 设置窗体加载时加载图片,找到窗体的加载(LOAD)事件 7.2 将最大化、最小化、关闭按钮的Click事件都设置为pictureBox_Click 7.3 添加代码 PRivate void Form1_Load(object sender, EventArgs e) { //设置大小 this.Width = Resource1.登录界面标题.Width; this.Height = Resource1.登录界面下面.Height + Resource1.登录界面标题.Height; pictureBox_Min.Width = Resource1.最小化按钮.Width; pictureBox_Min.Height = Resource1.最小化按钮.Height; pictureBox_Max.Width = Resource1.最大化按钮.Width; pictureBox_Max.Height = Resource1.最大化按钮.Height; pictureBox_Close.Width = Resource1.关闭按钮.Width; pictureBox_Close.Height = Resource1.关闭按钮.Height; //设置图 panel_Title.BackgroundImage = Resource1.登录界面标题; panel_ALL.BackgroundImage = Resource1.登录界面下面; pictureBox_Min.Image = null; pictureBox_Min.Image = Resource1.最小化按钮; pictureBox_Max.Image = null; pictureBox_Max.Image = Resource1.最大化按钮; pictureBox_Close.Image = null; pictureBox_Close.Image = Resource1.关闭按钮; //设置最大化、最小化、关闭按钮的Tag值,按照这种方法一定要设置,不然将会报错 pictureBox_Min.Tag = 0; pictureBox_Max.Tag = 1; pictureBox_Close.Tag = 2 } 7.4 鼠标点击事件的获取 /// <summary> /// 鼠标对最大化、最小化、关闭按钮的点击事件 /// </summary> /// <param name="frm_Tem"></param> /// <param name="n"></param> public void PicClickMenus(Form frm_Tem, int n) { switch (n) { case 0: frm_Tem.WindowState = FormWindowState.Minimized; break; case 1: { if (frm_Tem.WindowState == FormWindowState.Maximized) { frm_Tem.WindowState = FormWindowState.Normal; } else { frm_Tem.WindowState = FormWindowState.Maximized; } break; } case 2: frm_Tem.Close(); break; } } 7.5 鼠标点击事件 //最大化、最小化、关闭按钮的点击事件 private void pictureBox_Click(object sender, EventArgs e) { PicClickMenus(this, Convert.ToInt16(((PictureBox)sender).Tag.ToString())); Console.WriteLine(Convert.ToInt16(((PictureBox)sender).Tag.ToString())); }