基于.Net Core实现自定义皮肤WidForm窗口

前言

今天一起来实现基于.Net Core、Windows Form实现自定义窗口皮肤,并实现窗口移动功能。

素材

准备素材:边框、标题栏、关闭按钮图标。

在这里插入图片描述

窗体设计

1、创建Window窗体项目

在这里插入图片描述

在这里插入图片描述

2、窗体设计

拖拉4个Panel控件,分别用于:标题栏、关闭按钮、窗体、底部边框。
在这里插入图片描述

3、添加图片到资源

右键项目=》属性=》资源=》创建资源
在这里插入图片描述

点击添加资源=》添加现有文件。
在这里插入图片描述

4、设置控件背景图片

选择对应的Panel控件,分别设置标题栏、窗体、底部、关闭按钮。

在这里插入图片描述
在这里插入图片描述

5、效果

此时运行项目,窗体效果如下:

在这里插入图片描述

窗体事件

窗口的皮肤已经自定义完毕,下面我们为窗口添加事件:关闭和移动。

1、关闭窗口

为关闭按钮,添加关闭事件,按钮如下。

private void panel1_Click(object sender, EventArgs e)
{this.Close();
}

2、窗口移动代码

public void FrmMove(Form Frm, MouseEventArgs e)  //Form或MouseEventArgs添加命名空间using System.Windows.Forms;{if (e.Button == MouseButtons.Left){Point myPosittion = Control.MousePosition;//获取当前鼠标的屏幕坐标myPosittion.Offset(CPoint.X, CPoint.Y);//重载当前鼠标的位置Frm.DesktopLocation = myPosittion;//设置当前窗体在屏幕上的位置Tem_place = 0;this.Height = FrmHeight;}}
private void timer1_Tick(object sender, EventArgs e){if (this.Top < 3 && Tem_place==0)//如果窗体被移到屏幕的顶部{if (this.Handle == FormNameAt(Cursor.Position.X, Cursor.Position.Y))//当鼠标移致到该窗体上{panel_Title.Tag = 1;//设置标识,用于判断窗体在屏幕顶部timer2.Enabled = false;//不对窗体进行拉伸操作this.Top = 0;//使窗体致顶}else{panel_Title.Tag = 1;//设置标识,用于判断窗体在屏幕顶部timer2.Enabled = true;//将窗体在顶部进行隐藏}}else{if (this.Left < 3 || this.Right > GetSystemMetrics(0) - 3)//如果窗体被移到屏幕的左端或右端{if (this.Left < 3)//如果窗体被移到屏幕的左端{if (this.Handle == FormNameAt(Cursor.Position.X, Cursor.Position.Y))//当鼠标移致到该窗体上{panel_Title.Tag = 2;//设置标识,用于判断窗体在屏幕左端timer2.Enabled = false;Frm_Height = this.Height;this.Left = 0;//使窗体致左this.Top = 0;this.Height = Screen.AllScreens[0].Bounds.Height;Tem_place = 1;}else{panel_Title.Tag = 2;timer2.Enabled = true;//将窗体在左端进行隐藏}}if (this.Right > GetSystemMetrics(0) - 3)//如果窗体被移到屏幕的右端{if (this.Handle == FormNameAt(Cursor.Position.X, Cursor.Position.Y))//当鼠标移致到该窗体上{panel_Title.Tag = 3;//设置标识,用于判断窗体在屏幕右端timer2.Enabled = false;Frm_Height = this.Height;this.Left = GetSystemMetrics(0) - this.Width;//使窗体致右this.Top = 0;this.Height = Screen.AllScreens[0].Bounds.Height;Tem_place = 1;}else{panel_Title.Tag = 3;timer2.Enabled = true;//将窗体在右端进行隐藏}}}}}

好了,今天就分享到这边,需要示例代码的获取👇🏻。

欢迎点赞、收藏、关注、评论啦 、查看👇🏻获取联系方式👇🏻

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/124010.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【计算机组成原理】考研真题攻克与重点知识点剖析 - 第 1 篇:计算机系统概述

前言 本文基础知识部分来自于b站&#xff1a;分享笔记的好人儿的思维导图&#xff0c;感谢大佬的开源精神&#xff0c;习题来自老师划的重点以及考研真题。此前我尝试了完全使用Python或是结合大语言模型对考研真题进行数据清洗与可视化分析&#xff0c;本人技术有限&#xff…

请求转发与请求作用域

创建input.jsp页面&#xff0c;通过表单输入学号、姓名后&#xff0c;单击登录按钮&#xff0c;控制转发到FirstServlet对其进行处理&#xff0c;然后通过请求对象的getRequestDispartcher()获得RequestDispartcher对象&#xff0c;将请求转发至SecondServlet&#xff0c;在Sec…

简单的考试系统

开发一个简单的考试系统&#xff0c;在HTML页面中建立一个表单&#xff0c;通过post方法传递参数。题目类型包括单选题、多选题和填空题&#xff0c;要求程序给出考试成绩。 <!DOCTYPE html> <html> <head><title>question.html</title><met…

第1篇 目标检测概述 —(3)YOLO系列算法

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLO&#xff08;You Only Look Once&#xff09;系列算法是一种目标检测算法&#xff0c;主要用于实时物体检测。相较于传统的目标检测算法&#xff0c;YOLO具有更快的检测速度和更高的准确率。YOLO系列算法的核心思想是将…

基于SSM的视频点播系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用Vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

阿里云PolarDB自研数据库详细介绍_兼容MySQL、PostgreSQL和Oracle语法

阿里云PolarDB数据库是阿里巴巴自研的关系型分布式云原生数据库&#xff0c;PolarDB兼容三种数据库引擎&#xff1a;MySQL、PostgreSQL、Oracle&#xff08;语法兼容&#xff09;&#xff0c;目前提供云原生数据库PolarDB MySQL版、云原生数据库PolarDB PostgreSQL版和云原生数…

自动驾驶中的感知模型:实现安全与智能驾驶的关键

自动驾驶中的感知模型&#xff1a;实现安全与智能驾驶的关键 文章目录 引言感知模型的作用感知模型的技术安全与挑战结论 2023星火培训【专项营】Apollo开发者社区布道师倾力打造&#xff0c;包含PnC、新感知等的全新专项课程上线了。理论与实践相结合&#xff0c;全新的PnC培训…

设计模式(包括Spring)、贯穿项目梳理与源码知识点

目标&#xff1a;高复用性&#xff0c;高内聚&#xff0c;低耦合 目的&#xff1a;高可读性&#xff0c;重用性&#xff0c;可靠性 类的六种关系 依赖&#xff0c;类中用到了对方&#xff0c;没有对方连编译都通不过&#xff0c;如下的几种关系全部是依赖关系泛化/继承&…

Vue项目搭建图文详解教程

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 预备工作 请在本地创建文件夹用于存放Vue项目&#xff0c;例如&#xff1a;创建HelloWorld文件夹存放即将创建的Vue新项目。 创建Vue项目 首先&#xff0c;请在DOS中将目录…

大规模语言模型--训练成本

目前&#xff0c;基于 Transformers 架构的大型语言模型 (LLM)&#xff0c;如 GPT、T5 和 BERT&#xff0c;已经在各种自然语言处理 (NLP) 任务中取得了 SOTA 结果。将预训练好的语言模型(LM) 在下游任务上进行微调已成为处理 NLP 任务的一种 范式。与使用开箱即用的预训练 LLM…

蓝桥杯每日一题2023.10.3

杨辉三角形 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 40分写法&#xff1a; 可以自己手动构造一个杨辉三角&#xff0c;然后进行循环&#xff0c;用cnt记录下循环数的个数&#xff0c;看哪个数与要找的数一样&#xff0c;输出cnt #include<bits/stdc.h> using na…

【通意千问】大模型GitHub开源工程学习笔记(2)--使用Qwen进行推理的示例代码解析,及transformers的库使用

使用Transformers来使用模型 如希望使用Qwen-chat进行推理,所需要写的只是如下所示的数行代码。请确保你使用的是最新代码,并指定正确的模型名称和路径,如Qwen/Qwen-7B-Chat和Qwen/Qwen-14B-Chat 这里给出了一段代码 from transformers import AutoModelForCausalLM, Aut…