winform自定义窗体边框样式模板(支持四周边框拖拽改变窗体大小,支持鼠标拖动头部移动窗体)

您所在的位置:网站首页 winform放大缩小 winform自定义窗体边框样式模板(支持四周边框拖拽改变窗体大小,支持鼠标拖动头部移动窗体)

winform自定义窗体边框样式模板(支持四周边框拖拽改变窗体大小,支持鼠标拖动头部移动窗体)

2024-07-05 23:55:43| 来源: 网络整理| 查看: 265

 winform自己的边框已经过时,但小伙伴们又觉得自定义太过麻烦。本文将手把手教你自定义winform边框样式,并提供源代码链接(可直接作为模板使用)。话不多说,直接上操作步骤。

先上一张完成截图

一:去除winform边框,添加主面板,添加窗体四边(可自定义宽度和颜色,支持拖拽改变窗体大小) 1、去除winform边框:将FormBorderStyle属性设置为none

2、添加主面板:在此面板中,你可以自己添加窗体头(主要包括窗体icon,title,最大最小化按钮,关闭按钮等)

3、在Form.cs文件中,写下下列代码(此节主要添加窗体四边边框,并使其支持拖拽改变窗体大小) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace CustomForm { public partial class Form1 : Form { public Form1() { InitializeComponent(); InitBorder(); } private Point mousePoint = new Point(); //鼠标所在位置(top,left) System.Windows.Forms.Label[] labels = new System.Windows.Forms.Label[4]; //上下左右边框集合 private int lastWidth = 0; //上次窗体宽度(改变窗体大小时使用) private int lastHeight = 0; //上次窗体高度(改变窗体大小时使用) /// /// 初始化窗体边框 /// void InitBorder() { labels[0] = new System.Windows.Forms.Label(); labels[1] = new System.Windows.Forms.Label(); labels[2] = new System.Windows.Forms.Label(); labels[3] = new System.Windows.Forms.Label(); labels[0].BackColor = labels[2].BackColor = labels[1].BackColor = labels[3].BackColor = Color.FromArgb(188, 182, 211); //边框颜色 Controls.Add(labels[0]); Controls.Add(labels[1]); Controls.Add(labels[2]); Controls.Add(labels[3]); labels[0].Cursor = labels[2].Cursor = Cursors.SizeWE; labels[1].Cursor = labels[3].Cursor = Cursors.SizeNS; labels[0].MouseDown += BorderMouseDown; labels[1].MouseDown += BorderMouseDown; labels[2].MouseDown += BorderMouseDown; labels[3].MouseDown += BorderMouseDown; labels[0].MouseMove += WMouseMove; labels[2].MouseMove += EMouseMove; labels[1].MouseMove += NMouseMove; labels[3].MouseMove += SMouseMove; labels[0].Dock = DockStyle.Left; labels[2].Dock = DockStyle.Right; labels[1].Dock = DockStyle.Top; labels[3].Dock = DockStyle.Bottom; UpdateBorder(); } /// /// 边框鼠标按压事件 /// /// /// private void BorderMouseDown(object sender, MouseEventArgs e) { lastWidth = Width; lastHeight = Height; this.mousePoint.X = MousePosition.X; this.mousePoint.Y = MousePosition.Y; } /// /// 左边框拖动事件 /// /// /// /// /// 上边框拖动事件 /// /// /// private void WMouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (Width != MinimumSize.Width) { Left = MousePosition.X; } this.Width = lastWidth - (Control.MousePosition.X - mousePoint.X); } } /// /// 右边框边框拖动事件 /// /// /// private void EMouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { this.Width = lastWidth + (Control.MousePosition.X - mousePoint.X); } } private void NMouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { if (Height != MinimumSize.Height) { Top = MousePosition.Y; } this.Height = lastHeight - (Control.MousePosition.Y - mousePoint.Y); } } /// /// 下边框拖动事件 /// /// /// private void SMouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { this.Height = lastHeight + (Control.MousePosition.Y - mousePoint.Y); } } /// /// 自定义给窗体添加边框 /// private void UpdateBorder() { labels[1].Height = labels[3].Height =2; labels[0].Width = labels[2].Width = 2; } } } 成功截图: 初始窗体

改变大小后窗体

二、添加窗体header和content 布局结构

页面效果:

这部分功能对应代码 (与上步代码放在一起即可正常使用) /// /// 最小化按钮点击事件 /// /// /// private void btn_minimize_Click(object sender, EventArgs e) { WindowState = FormWindowState.Minimized; } /// /// 关闭按钮点击事件 /// /// /// private void btn_close_Click(object sender, EventArgs e) { Close(); } /// /// 标题块按压事件(记住鼠标的位置) /// /// /// private void pnl_titile_MouseDown(object sender, MouseEventArgs e) { this.mousePoint.X = e.X; this.mousePoint.Y = e.Y; } /// /// 鼠标移动事件(根据鼠标按下的位置和鼠标移动后的位置 移动窗体) /// /// /// private void pnl_titile_MouseMove(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { this.Top = Control.MousePosition.Y - mousePoint.Y; this.Left = Control.MousePosition.X - mousePoint.X; } } 各部分支持功能

至此,窗体自定义边框模板已完成。有需要的话,可以点击下面的链接获取源代码,如果觉得有帮助,请给予点赞或评论,转载的话注意标明出处,谢谢(~ ̄▽ ̄)~

源代码链接 链接:https://pan.baidu.com/s/1aLN6JtZkq_qrkI24a5qvKw 提取码:89gn


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭