您的位置:首页 > 编程语言

.NET编程技术——实验06:窗体应用的最小化在Windows状态栏中显示托盘图标

2018-01-09 17:48 393 查看
阅读须知:纯粹是本人啊Jun作为初学者的笔记和个人对其中知识的复习,大神请绕道。


实验01:VS2015 对象浏览器的使用、简单调试和断点使用。

实验04:RS485串口调试、基本控件使用、CRC算法应用

实验05:RS485串口通讯,串口指令的收发应用,完成串口基础功能,github地址:实验05

实验06:窗体应用的最小化在Windows状态栏中显示托盘图标

实验07:Windows的注册表的基本使用方法,文件流保存为文本文件基础用法

实验08:利用GDI+技术生成简单验证码,类似excel的数据折线图、并保存为图片

实验09:Access数据库的创建、表创建、MD5加密,数据、图片保存在数据库的用法

实验10:将DataGridView表单数据保存为excel文件,表单的基本格式化

包含实验06~实验10的功能:github地址:实验10

那先来看一下实验06的主要的题目吧。第 1 题纯粹画图,还是不作考虑了。来看第 2 题,其中有一些我也选择性不讲了。

<
10123
/span>

2、通过Windows Form项目,根据总体需求、总体结构和系统草图,建立和开发出“XXX温度监控软件”,软件的基本要求有:

(1)能用户控制,有管理员,可以修改参数等,普通用户只能采集和显示数据,密码直接写在代码中。系统启动时,先显示登录窗体,密码验证成功后,再进入主窗体,要有密码验证失败的截图;

(2)主窗体中要有菜单、工具栏和状态栏,菜单、工具栏要能根据不同用户而改变,状态栏中能显示出当前时间和已登录的用户名,要有用户切换截图;

(3)主窗体的背景图为个人图片,图标为个性化图标;

(4)系统在最小化时,显示为Windows状态栏中的托盘图标。

(5)有“帮助”菜单,并实现相应的窗体,能显示基本的帮助信息,并能持续更新。

我来说一下,第一题的用户控制(1)能用户控制,由于实验06只是原型,我在后面的实验不断地将其优化了,所以之后

的实验再讨论这个。先来看一下后面实验的登录页面的完整图吧。由于还有验证码的功能,所以暂时在这不讲



(2)主窗体中要有菜单、工具栏和状态栏,菜单、工具栏要能根据不同用户而改变,状态栏中能显示出当前时间和已登录的用户名,要有用户切换截图;

老师在将这个之前,关于菜单、工具栏和状态栏,都做了介绍,在C#中添加菜单、工具栏和状态栏也是非常的简单,

还拿了VS2015做了模板示范





大家可以了解一下几个控件:MenuStrip(菜单栏)、ToolStrip(工具栏)、StatusStrip(状态栏),

操作起来也十分简单。

(3)主窗体的背景图为个人图片,图标为个性化图标;



(4)系统在最小化时,显示为Windows状态栏中的托盘图标。

缩小后如图所示,就好像QQ缩小的在 Windows 状态栏会有你的图片





上面那个是状态栏,有时候我会傻傻分不清,任务栏和状态栏,所以给自己普及一下。下面的是任务栏





这个QQ缩小的操作也是找了挺多的资料,其中SizeChanged 事件很重要,当你的窗体的尺寸变化都会触发到这个事件



再来介绍两个控件:NotifyIcon(指定可在通知区域创建图标的组件)、ContextMenuStrip(内容菜单栏)






/// <summary>
/// 判断是否最小化,然后显示托盘
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void MainForm_SizeChanged(object sender, EventArgs e)
{
if(WindowState == FormWindowState.Minimized)  //当这个窗体的尺寸状态为最小化的时候
{
this.ShowInTaskbar = false;  // 最小化的时候,任务栏不显示
notifyIcon1.Visible = true;  //控件 NotifyIcon 可视
}
}


当窗体缩小成图标在Windows状态栏的时候,我想鼠标左键点击一下,窗体重新显示给我看,怎么办呢?
看代码。这里用到鼠标事件,其实鼠标事件我在学JS的时候认识的。

/// <summary>
/// 添加双击托盘图标事件(双击显示窗口)
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
if(e.Button == MouseButtons.Left)
{
WindowState = FormWindowState.Normal;//还原窗体显示
this.Visible = true;
//this.Activate();  //激活窗体并给予它焦点
this.ShowInTaskbar = true; //任务栏显示图标
}

}


好吧,只是鼠标左键点击一下就行了吗,就这么简单?
还没呢~~ 我们常见的软件除了左键点击状态栏的图标显示窗体外,其实还会有鼠标右击的软件任务栏。如图下



哈哈,这个功能就要提到另一个控件ContextMenuStrip
(内容菜单栏)。NotifyIconContextMenuStrip常常配合来使用的

看图,留意到Windows状态栏的图标默认是右键点击会显示ContextMenuStrip




ContextMenuStrip
的操作其实不算难,但有点儿绕,不是很直接能理解。


“打开窗体”
和 “退出程序” 其实是ContextMenuStrip 的属性Item中加上去的。点击 Item 后 ,就可以看到里面有两个目录



   
点击“添加”按钮就可以添加目录的子项








ok了,ContextMenuStrip 的基本功能就讲到这里吧,“打开窗体” 和 “退出程序” 其实就是点击事件。



“打开窗体” 的点击事件代码如下:

/// <summary>
/// 显示窗体
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void showToolStripMenuItem_Click(object sender, EventArgs e)
{
WindowState = FormWindowState.Normal;
}


“退出程序” 的点击事件代码如下

/// <summary>
/// 托盘右键退出程序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void quitToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Dispose();
this.Close();
}

这个(4)系统在最小化时,显示为Windows状态栏中的托盘图标。的功能在上一次实验就加上去了,

可以参考一下Github:串口调试助手基础版

实验06完成

,如果有疑问或者在哪些地方有错误的,欢迎大家指出,共同学习,共同进步。

实验01:VS2015 对象浏览器的使用、简单调试和断点使用。

实验04:RS485串口调试、基本控件使用、CRC算法应用

实验05:RS485串口通讯,串口指令的收发应用,完成串口基础功能,github地址:实验05

实验06:窗体应用的最小化在Windows状态栏中显示托盘图标

实验07:Windows的注册表的基本使用方法,文件流保存为文本文件基础用法

实验08:利用GDI+技术生成简单验证码,类似excel的数据折线图、并保存为图片

实验09:Access数据库的创建、表创建、MD5加密,数据、图片保存在数据库的用法

实验10:将DataGridView表单数据保存为excel文件,表单的基本格式化

包含实验06~实验10的功能:github地址:实验10
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐