C#自定义最大化、最小化和关闭按钮

目录

1.资源文件

2.读取资源文件中的图片

3.WindowState属性

4. 示例


        用户在制作应用程序时,为了使用户界面更加美观,一般都自己设计窗体的外观,以及窗体的最大化、最小化和关闭按钮。本例通过资源文件来存储窗体的外观,以及最大化、最小化和关闭按钮的图片,再通过鼠标移入、移出事件来实现按钮的动态效果。

        本实例首先使用资源文件来存储窗体的外观、“最大化”、“最小化”和“关闭”按钮的图片,然后使用窗体的WindowState属性实现窗体的最大化、最小化和还原操作。

1.资源文件

        在加载图片时,如果是以本地资源进行加载,那么在运行可执行文件时,必须在当前目录下存放指定的图片,这样会给用户带来不必要的麻烦。为了解决这一问题,本实例利用资源文件来存储相关的图片。

        将图片存入资源文件中将图片存入资源文件中的步骤如下:

  • 在“解决方案资源管理器”面板中打开Properties中的Resources.resx文件。
  • 在“添加资源”下拉列表框中选择“添加现有文件”选项,弹出“将现有文件添加到资源中”窗体,在该窗体中将指定的图片添加到资源文件中。

2.读取资源文件中的图片

        读取资源文件中的图片主要是用Properties命名空间下的Resources资源类。实现代码如下:pictureBox.Image =Properties.Resources.最大化按钮;将图片添加到Resources.resx文件后,必须对整个项目进行保存,否则无法在Resources资源类中调用已添加的图片。

3.WindowState属性

        该属性用于获取或设置窗体的窗口状态。语法格式如下:

public FormWindowState WindowState {get;set;}
参数说明
属性值:FormWindowState枚举值之一,表示窗体的窗口状态。

        FormWindowState枚举值及说明如表:

枚   举 值

描   述

Maximized

最大化的窗口

Minimized

最小化的窗口

Normal

默认大小的窗口

4. 示例

namespace _163
{public partial class Form1 : Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender, EventArgs e){panel1.BackgroundImage = Properties.Resources.登录界面标题;//显示窗体标题栏的图片panel1.BackgroundImageLayout = ImageLayout.Stretch;           // 设置背景图片的布局方式为平铺panel2.BackgroundImage = Properties.Resources.登录界面下面;//显示窗体标题栏下同的图片panel2.BackgroundImageLayout = ImageLayout.Stretch;pictureBox1.Image = Properties.Resources.GetObject("最小化按钮");//第1种方法显示最大化按钮的图片pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;pictureBox2.Image = Properties.Resources.最大化按钮; //第2种方法显示最大化按钮的图片pictureBox2.SizeMode = PictureBoxSizeMode.StretchImage;pictureBox3.Image = Properties.Resources.关闭按钮;     //第2种方法显示关闭按钮的图片pictureBox3.SizeMode = PictureBoxSizeMode.StretchImage;}#region  设置窗体的最大化、最小化和关闭按钮的单击事件/// <summary>/// 设置窗体的最大化、最小化和关闭按钮的单击事件/// </summary>/// <param Form_Tem="Form">窗体</param>/// <param n="int">标识</param>public static void FormClickMeans(Form Form_Tem, int n){switch (n)//窗体的操作样式{case 0://窗体最小化Form_Tem.WindowState = FormWindowState.Minimized;//窗体最小化break;case 1://窗体最大化和还原的切换{if (Form_Tem.WindowState == FormWindowState.Maximized)//如果窗体当前是最大化Form_Tem.WindowState = FormWindowState.Normal;//还原窗体大小elseForm_Tem.WindowState = FormWindowState.Maximized;//窗体最大化break;}case 2:	//关闭窗体Form_Tem.Close();break;}}#endregion#region  控制图片的切换状态/// <summary>/// 控制图片的切换状态/// </summary>/// <param sender =" object ">要改变图片的对象</param>/// <param n="int">标识</param>/// <param ns="int">移出移入标识</param>private static readonly PictureBox pictureBox = new();private static PictureBox tem_PictB = pictureBox;//实例化PictureBox控件public static PictureBox Tem_PictB { get => tem_PictB; set => tem_PictB = value; }public static void ImageSwitch(object sender, int n, int ns){Tem_PictB = (PictureBox)sender;switch (n)//获取标识{case 0://当前为最小化按钮{Tem_PictB.Image = null;//清空图片if (ns == 0)//鼠标移入Tem_PictB.Image = Properties.Resources.最小化变色;if (ns == 1)//鼠标移出Tem_PictB.Image = Properties.Resources.最小化按钮;break;}case 1://最大化按钮{Tem_PictB.Image = null;if (ns == 0)Tem_PictB.Image = Properties.Resources.最大化变色;if (ns == 1)Tem_PictB.Image = Properties.Resources.最大化按钮;break;}case 2://关闭按钮{Tem_PictB.Image = null;if (ns == 0)Tem_PictB.Image = Properties.Resources.关闭变色;if (ns == 1)Tem_PictB.Image = Properties.Resources.关闭按钮;break;}default:break;}}#endregionprivate void PictureBox1_Click(object sender, EventArgs e){FormClickMeans(this, Convert.ToInt16(((PictureBox)sender).Tag!.ToString()));//设置鼠标单击时按钮的图片}private void PictureBox2_Click(object sender, EventArgs e){ImageSwitch(sender, Convert.ToInt16(((PictureBox)sender).Tag!.ToString()), 0);//设置鼠标移入后按钮的图片}private void PictureBox3_Click(object sender, EventArgs e){ImageSwitch(sender, Convert.ToInt16(((PictureBox)sender).Tag!.ToString()), 1);//设置鼠标移出后按钮的图片}}
}

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

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

相关文章

服务器离线配置vscode连接,conda虚拟环境

记录一下服务器离线配置问题&#xff0c;以备不时之需。 服务器离线配置 vscode连接参考&#xff1a;vscode-server离线安装-CSDN博客 服务器离线配置conda虚拟环境&#xff1a;Conda 环境离线迁移&#xff08;服务器断网情况下搭建虚拟环境envs&#xff09; - 知乎 上次两个…

微服务day06 -- Elasticsearch的数据搜索功能。分别使用DSL和RestClient实现搜索

1.DSL查询文档 elasticsearch的查询依然是基于JSON风格的DSL来实现的。 1.1.DSL查询分类 Elasticsearch提供了基于JSON的DSL&#xff08;Domain Specific Language&#xff09;来定义查询。常见的查询类型包括&#xff1a; 查询所有&#xff1a;查询出所有数据&#xff0c;一…

macOS - 安装 b2 (Jamfile)

文章目录 安装 b2关于 b2chain of eventsuse B2 b2 help 安装 b2 官方文档 - Installation&#xff1a;https://www.boost.org/doc/libs/1_84_0/tools/build/doc/html/index.html#bbv2.installation 1、下载 前往 github - b2 - releases https://github.com/bfgroup/b2/relea…

‘npm‘ 不是内部或外部命令,也不是可运行的程序

npm认识三年了&#xff0c;今天才知道这是node.js的命令 也就是说&#xff0c;想要在cmd里面运行 npm 命令&#xff0c;但就的安装node.js 1. node.js安装 没有安装包的先下载安装包&#xff1a;下载 | Node.js 中文网 (nodejs.cn) 下载之后双击打开&#xff0c;一路安装确…

基于Arduino IDE 野火ESP8266模块 EEPROM 存储开发

一、操作存储器 我们可以使用ESP8266模块的EEPROM&#xff0c;也就是可读可擦存储器&#xff0c;可以掉电不丢失地帮我们存储一些数据。ESP8266微控制器有一个闪存区(Flash memory) 来模拟Arduino的EEPROM。这是微控制器中一个特殊的内存位置&#xff0c;即使在主板关闭后&…

vscode添加gitee

1.创建仓库 2.Git 全局设置 3.初始化仓库 2.1 打开vscode打开需要上传到给git的代码文件 2.2.点击左边菜单第三个的源代码管理->初始化仓库 4.点击加号暂存所有更改 5.添加远程仓库 5.1 添加地址&#xff0c;回车 5.2 填写库名&#xff0c;回车 6.提交和推送 6.1 点击✔提交…

SpringBoot学习之ElasticSearch下载安装和启动(Mac版)(三十一)

本篇是接上一篇Windows版本,需要Windows版本的请看上一篇,这里我们继续把Elasticsearch简称为ES,以下都是这样。 一、下载 登录Elasticsearch官网,地址是:Download Elasticsearch | Elastic 进入以后,网页会自动识别系统给你提示Mac版本的下载链接按钮 二、安装 下载…

【分布式】——CAPBASE理论

CAP&BASE理论 ⭐⭐⭐⭐⭐⭐ Github主页&#x1f449;https://github.com/A-BigTree 笔记链接&#x1f449;https://github.com/A-BigTree/tree-learning-notes ⭐⭐⭐⭐⭐⭐ Spring专栏&#x1f449;https://blog.csdn.net/weixin_53580595/category_12279588.html Sprin…

JMeter元件作用域和执行顺序

JMeter元件作用域和执行顺序 元件的基本介绍基本元件总结 作用域的基本介绍作用域的原则元件执行顺序Jmeter第一个案例&#xff1a; Jmeter三个重要组件&#xff08;重点&#xff09;线程组特点线程组分类线程组的属性案例分析 HTTP请求案例一&#xff08;使用HTTP请求路径来传…

基于ArkUI框架开发-ImageKnife渲染层重构

ImageKnife是一款图像加载缓存库&#xff0c;主要功能特性如下&#xff1a; ●支持内存缓存&#xff0c;使用LRUCache算法&#xff0c;对图片数据进行内存缓存。 ●支持磁盘缓存&#xff0c;对于下载图片会保存一份至磁盘当中。 ●支持进行图片变换&#xff1a;支持图像像素…

Linux配置elasticsearch开机自启

脚本&#xff1a; vi /etc/init.d/elasticsearch脚本内容&#xff1a; ES_HOME的路径替换为自己的 #!/bin/bash #chkconfig: 2345 80 90 #description: elasticsearch export ES_HOME/usr/local/elasticsearch-8.8.0case "$1" in start)su es<<!cd $ES_HOME.…

el-card设置内边距

el-card设置内边距 :deep(.el-card .el-card__body) {padding: 5px; }

Android 15全面解读:性能飙升、隐私守护与智能生活新纪元

1. 更强大的性能 Android 15 带来了一系列性能方面的改进&#xff0c;以确保您的设备在运行应用程序时能够更加流畅。通过对系统进行优化&#xff0c;Android 15 在响应速度和性能方面都有了显著的提升。 这些优化包括&#xff1a; 新一代处理器支持&#xff1a; Android 15 …

java第一次作业(二)

先写思路&#xff0c;再写代码&#xff0c;思路清晰&#xff0c;才能写对代码 7-6 求12...n的和 思路&#xff1a; 运用expression的字符串输出 重点&#xff1a; expression输出 代码&#xff1a; import java.util.Scanner; public class Main {public static void main…

【代驾+顺风车+货运】全开源双端APP代驾+顺风车+货运代驾小程序源码

内容目录 一、详细介绍二、效果展示1.部分代码2.效果图展示 一、详细介绍 系统是基于Thinkphpuniapp开发的&#xff0c;全开源未加密&#xff0c;这套源码可以拿回去自己做二开 后台用户端司机端 功能详情介绍&#xff1a; 车主实名认证&#xff0c;驾驶证认证&#xff0c;车…

Android-System SELinux 权限

一、SELinux概念 安全增强型 Linux&#xff08;Security-Enhanced Linux&#xff09;简称 SELinux&#xff0c;它是 Linux 的一个安全子系统。SELinux 主要作用是最大限度地减小系统中服务进程可访问的资源&#xff08;最小权限原则&#xff09;。对资源的访问控制分为两类: DA…

MySQL8.0.27(社区版)安装教程和环境变量配置

MySQL8.0.27&#xff08;社区版&#xff09;软件百度网盘链接 链接&#xff1a;https://pan.baidu.com/s/1SRS0hAQQBENQFTfLeDjYzw?pwd1111 提取码&#xff1a;1111 下载完成后&#xff0c;解压MySQL社区版的ZIP压缩文件&#xff0c;通过命令的方式安装MySQL 1.安装MySQL8.0…

前端理论总结(css3)——css优化的方法

1&#xff1a;首推的是合并css文件&#xff0c;如果页面加载10个css文件&#xff0c;每个文件1k&#xff0c;那么也要比只加载一个100k的css文件慢 2&#xff1a;减少css嵌套&#xff0c;最好不要套三层以上 3&#xff1a;不要在ID选择器前面进行嵌套&#xff0c;ID本来就是唯一…

讨论物联网如何帮助监测和改善环境质量

物联网&#xff08;IoT&#xff09;作为一种革命性的技术&#xff0c;通过将各种设备和物品连接到互联网&#xff0c;使它们能够收集和交换数据&#xff0c;为监测和改善环境质量提供了强大的工具。以下是物联网在环境监测和改善方面的一些关键作用&#xff1a; 实时数据收集&…

Ubuntu20.04下VSCode配置PCL和OpenCV库-C++

Ubuntu20.04 VSCode Cpp PCL OpenCV 准备工作 代码编辑&#xff1a;VSCode 开发语言&#xff1a;C 编译工具&#xff1a;Cmake G 依赖需求&#xff1a;PCL / OpenCV 安装PCL库 sudo apt install libpcl-dev配置OpenCV库 安装依赖 sudo apt-get install build-essenti…