网站首页 > 知识剖析 正文
实例说明
用户在制作应用程序时,为了使用户界面更加美观,一般都自已设计窗体的外观,以及窗体的最大化、最小化和关闭按钮。本实例通过资源文件来存储窗体的外观,及最大化、最小化和关闭按钮的图片,再通过鼠标移入、移出事件来实现按钮的动态效果。
技术要点
本实例使用资源文件来存储窗体外观、“最大化”、“最小化”和“关闭”按钮的图片,再用窗体的WindowState属性实现最大化、最小化和还原的操作。下面对其进行详细说明。
(1)资源文件
在加载图片时,如果是以本地资源进行加载,那么,在运行可执行文件时必须在当前目录下存放指定的图片,这样,会给用户带来不必要的麻烦,为了解决这一问题,本实例用资源文件来存储相关的图片。下面对资源文件的应用进行详细说明。
1.将图片存入资源文件中
将图片存入资源文件中的相关步骤如下:
①在“解决方案资源管理器”中打开Properties中的Resources.resx文件。
②在打开的Resources.resx文件中单击“添加资源”右侧的向下箭头,在下拉项中选择“添加现有文件”,弹出“将现有文件添加到资源中”窗体,在该窗体中将指定的图片添加到资源文件中。
2.读取资源文件中的图片
读取资源文件中的图片主要是用Properties命名空间下的Resources资源类。实现代码如下:
pictureBox.Image = Properties.Resources.最大化按钮;
注意:将图片添加到Resources.resx文件后,必须对整个项目进行保存,否则无法在Resources资源类中调用已添加的图片。
(2)WindowState属性
该属性用于获取或设置窗体的窗口状态。其常用语法如下:
public FormWindowState WindowState { get; set; }
l 属性值:FormWindowState,表示窗体的窗口状态。
FormWindowState的成员如表:
成员 | 说 明 |
Maximized | 最大化的窗口 |
Minimized | 最小化的窗口 |
Normal | 默认大小的窗口 |
FormWindowState的成员及说明
例如,本实例中用WindowState属性使窗体最大化。代码如下:
Frm_Tem.WindowState = FormWindowState.Maximized;
开发步骤
(1)新建一个Windows应用程序,将其命名为“自定义最大化、最小化和关闭按钮”,默认窗体名为Form1,将Form1窗体的FormBorderStyle属性设置为None。
(2)Form1窗体主要用到的控件及说明如表所示。
Form1窗体主要用到的控件及说明:
控 件 类 型 | 控件名称 | 属性设置 | 说 明 |
panel_Title | Dock属性设置为Top | 显示窗体标题栏 | |
panel_ALL | Dock属性设置为Fill | 显示标题栏下面的窗体 | |
pictureBox_Min | Tag属性设置为0 | 显示最小化按钮 | |
pictureBox_Max | Tag属性设置为1 | 显示最大化按钮 | |
pictureBox_Close | Tag属性设置为2 | 显示关闭按钮 |
(3)主要程序代码。
在Form1窗体加载时,将资源文件中的图片添加到相应的PictuteBox和Panel控件中,代码如下:
private void Form1_Load(object sender, EventArgs e)
{
this.Width = Properties.Resources.登录界面标题.Width; //设置体的宽度
this.Height = Properties.Resources.登录界面标题.Height + Properties.Resources.登录界面下面.Height;//设置窗体的高度
panel_Title.BackgroundImage = Properties.Resources.登录界面标题; //显示窗体标题栏的图片
panel_ALL.BackgroundImage = Properties.Resources.登录界面下面; //显示窗体标题栏下同的图片
pictureBox_Min.Image = null;//清空PictuteBox控件
pictureBox_Min.Image = Properties.Resources.最小化按钮; //显示最小化按钮的图片
pictureBox_Max.Image = null; //清空PictuteBox控件
pictureBox_Max.Image = Properties.Resources.最大化按钮; //显示最大化按钮的图片
pictureBox_Close.Image = null; //清空PictuteBox控件
pictureBox_Close.Image = Properties.Resources.关闭按钮; //显示关闭按钮的图片
}
在“关闭”按钮的鼠标移入、移出和单击事件中调用自定义方法FrmClickMeans和ImageSwitch,以实现按钮的相关操作。实现代码如下:
private void pictureBox_Close_Click(object sender, EventArgs e) //单击事件
{
FrmClickMeans(this, Convert.ToInt16(((PictureBox)sender).Tag.ToString())); //设置鼠标单击时按钮的图片
}
private void pictureBox_Close_MouseEnter(object sender, EventArgs e) //鼠标移入事件
{
ImageSwitch(sender, Convert.ToInt16(((PictureBox)sender).Tag.ToString()), 0); //设置鼠标移入后按钮的图片
}
private void pictureBox_Close_MouseLeave(object sender, EventArgs e) //鼠标移出事件
{
ImageSwitch(sender, Convert.ToInt16(((PictureBox)sender).Tag.ToString()), 1); //设置鼠标移出后按钮的图片
}
技巧:由于“最小化”、“最大化”和“关闭”按钮所使用的事件相同,所以将“最小化”和“最大化”按钮的事件指向“关闭”按钮的相关事件。
自定义方法ImageSwitch主要是在鼠标移入和移出控件时对图片进行切换。主要代码如下:
#region 控制图片的切换状态
/// <summary>
/// 控制图片的切换状态
/// </summary>
/// <param sender =" object ">要改变图片的对象</param>
/// <param n="int">标识</param>
/// <param ns="int">移出移入标识</param>
public static PictureBox Tem_PictB = new PictureBox(); //实例化PictureBox控件
public 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;
}
}
}
#endregion
自定义方法FrmClickMeans主要用于设置窗体的最大化、最小化和关闭按钮的操作。主要代码如下:
#region 设置窗体的最大化、最小化和关闭按钮的单击事件
/// <summary>
/// 设置窗体的最大化、最小化和关闭按钮的单击事件
/// </summary>
/// <param Frm_Tem="Form">窗体</param>
/// <param n="int">标识</param>
public void FrmClickMeans(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;
}
}
#endregion
- 上一篇: vue短文:如何在鼠标悬停在一个元素上时执行某些操作
- 下一篇: 一文介绍amis百度低代码框架
猜你喜欢
- 2025-08-01 洞察宇宙(十九):Visio入门使用指南
- 2025-08-01 马斯克Neuralink发布会 1.5秒“插脑” 2026年治愈失明
- 2025-08-01 界面开发如何自定义Winform、.NET模板|附完整代码
- 2025-08-01 Element UI中el-tooltip与el-image的完美融合
- 2025-08-01 如何快速实现一个无缝轮播效果
- 2025-08-01 来实现一个右键菜单吧
- 2025-08-01 什么是窗口子类化
- 2025-08-01 一文介绍amis百度低代码框架
- 2025-08-01 vue短文:如何在鼠标悬停在一个元素上时执行某些操作
- 2025-08-01 JS问题:如何实现文本一键复制和长按复制功能?
- 08-0612 个最佳 JavaScript 动画库,让您的 Web 页面动起来
- 08-06HTML 二次函数图像动画展示
- 08-06UnoCSS 内置的动画
- 08-06炫酷的CSS3 loading加载动画,总有一款适合你
- 08-06想要开发更好的Python项目,代码质量是关键
- 08-06想要入门学好Python编程,先从这几本书开始
- 08-06甲方VS程序员精彩画面鉴赏
- 08-06后端语言性能排行,哪种语言最快,为什么?
- 最近发表
- 标签列表
-
- xml (46)
- css animation (57)
- array_slice (60)
- htmlspecialchars (54)
- position: absolute (54)
- datediff函数 (47)
- array_pop (49)
- jsmap (52)
- toggleclass (43)
- console.time (63)
- .sql (41)
- ahref (40)
- js json.parse (59)
- html复选框 (60)
- css 透明 (44)
- css 颜色 (47)
- php replace (41)
- css nth-child (48)
- min-height (40)
- xml schema (44)
- css 最后一个元素 (46)
- location.origin (44)
- table border (49)
- html tr (40)
- video controls (49)