使用C#的窗体显示与隐藏动画效果方案 - 开源研究系列文章
今天继续研究C#的WinForm的显示动画效果。
上次我们实现了无边框窗体的显示动画效果(见博文:基于C#的无边框窗体动画效果的完美解决方案 - 开源研究系列文章 ),这次介绍的是未在任务栏托盘中窗体的显示隐藏动画效果的实现代码。
1、 项目目录;
下面是项目目录,由基本的窗体和操作类组成。

2、 代码介绍;
代码比较简单,直接将窗体的最小化、最大化效果加入进去即可。
1 /// <summary>
2 /// 显示隐藏窗体状态操作类
3 ///
4 /// 窗体的状态都通过此API进行处理
5 /// </summary>
6 internal static class ShowWindowHelper
7 {
8 /// <summary>
9 /// 设置窗体状态
10 /// </summary>
11 /// <param name="form">要设置的窗体</param>
12 /// <param name="windowState">窗体状态</param>
13 internal static void ShowWindow(Form form, ShowWindowState windowState)
14 {
15 switch (windowState)
16 {
17 case ShowWindowState.Show:
18 form.Visible = true;
19 form.WindowState = System.Windows.Forms.FormWindowState.Normal;
20 form.ShowInTaskbar = true;
21 break;
22 case ShowWindowState.Hide:
23 //这里两个Visible是为了关闭时的动画效果
24 form.Visible = false;
25 form.WindowState = System.Windows.Forms.FormWindowState.Minimized;
26 form.ShowInTaskbar = false;
27 form.Visible = false;
28 break;
29 case ShowWindowState.Min:
30 form.Visible = true;
31 form.WindowState = System.Windows.Forms.FormWindowState.Minimized;
32 break;
33 case ShowWindowState.Max:
34 form.Visible = true;
35 form.WindowState = System.Windows.Forms.FormWindowState.Maximized;
36 break;
37 case ShowWindowState.DirectShow:
38 form.Show();
39 break;
40 case ShowWindowState.DirectHide:
41 form.Hide();
42 break;
43 }
44 }
45 }
3、 运行界面;
因为没录制GIF,所以不提供界面了。
4、 使用方法;
直接将操作类放到项目里面,然后调用静态类方法即可。
1 /// <summary>
2 /// 隐藏窗体按钮事件
3 /// </summary>
4 /// <param name="sender"></param>
5 /// <param name="e"></param>
6 private void btnHide_Click(object sender, EventArgs e)
7 {
8 ShowWindowHelper.ShowWindow(this, ShowWindowState.Hide);
9 }
10
11 /// <summary>
12 /// 图标单击事件
13 /// </summary>
14 /// <param name="sender"></param>
15 /// <param name="e"></param>
16 private void NIShowWindow_MouseClick(object sender, MouseEventArgs e)
17 {
18 if(e.Button == MouseButtons.Left)
19 {
20 ShowWindowHelper.ShowWindow(this, ShowWindowState.Show);
21 }
22 }
23 /// <summary>
24 /// 图标双击事件
25 /// </summary>
26 /// <param name="sender"></param>
27 /// <param name="e"></param>
28 private void NIShowWindow_MouseDoubleClick(object sender, MouseEventArgs e)
29 {
30 if (e.Button == MouseButtons.Left)
31 {
32 //这里调用Hide程序会退出,所以直接调默认的Hide函数
33 ShowWindowHelper.ShowWindow(this, ShowWindowState.DirectHide);
34 }
35 }
5、 源码下载;
这里提供源码例子下载:
https://download.csdn.net/download/lzhdim/88171194
上面是笔者整理的关于C#的窗体隐藏到托盘图标中的动画效果,搭配上次的无边框窗体的效果,更好的能够对窗体的效果进行显示。提供了源码下载及例子,能够直接进行代码复用即可,希望对同样问题的读者能够解决该问题。
使用C#的窗体显示与隐藏动画效果方案 - 开源研究系列文章的更多相关文章
- 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态。点击列表的项,切换二级列表的显示或隐藏状态
查看本章节 查看作业目录 需求说明: 使用jQuery 中的显示与隐藏动画效果实现折叠下拉菜单的收缩和展开,在页面的列表中有若干项,列表的每项中有一个二级列表,二级列表默认为隐藏状态.点击列表的项,切 ...
- AngularJS中实现显示或隐藏动画效果的3种方式
本篇体验在AngularJS中实现在"显示/隐藏"这2种状态切换间添加动画效果. 通过CSS方式实现显示/隐藏动画效果 思路: →npm install angular-anima ...
- android view控件的显示和隐藏动画效果
// 显示动画 mShowAction = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO ...
- 教你三种jQuery框架实现元素显示及隐藏动画方式
摘要:在jQuery框架中对元素对象进行显示和隐藏有三种方式,分别是"默认方式显示和隐藏"."滑动方式显示和隐藏"."淡入淡出显示和隐藏". ...
- jqury+animation+setTimeOut实现渐变显示与隐藏动画
初始效果 实现效果 1,编写HTMl结构代码 <div class="box"> <i class="icon"></i> ...
- setAnimationStyle实现的popwindow显示消失的动画效果
摘要 popwindow通过setAnimationStyle(int animationStyle)函数来设置动画效果 android:windowEnterAnimation表示进入窗口动画 an ...
- LayoutTransition实现显示、隐藏动画
public class Main4Activity extends Activity { private TextView tv1; private Button button1; private ...
- WPF制作子窗体的弹出动画效果
创建一个WPF应用程序WpfApplication1,新建个窗体DialogWin <Windowx:Class="WpfApplication1.DialogWin" xm ...
- vueJS简单的点击显示与隐藏的效果
目前前端框架太多,接触过angular.ember,现在开始倒腾vue 此处用到v-if.v-else.v-show,v-if或让元素不在DOM上,v-show只是改变display:block属性, ...
- wpf image控件循环显示图片 以达到动画效果 问题及解决方案
1>最初方案: 用wpf的image控件循环显示图片,达到动画效果,其实就是在后台代码动态改变Image.Source的值,关键代码: ; i < ; i++)//六百张图片 { Bitm ...
随机推荐
- Vue3项目的打包运行
一.项目打包(vite创建的项目) 执行以下这条命令对项目进行打包 npm run build 生成dist文件夹,进入dist文件夹下的index.html文件,然后右键选择Open with Li ...
- 2023-01-05:konradkleine/docker-registry-frontend是registry的web界面工具之一。请问部署在k3s中,yaml如何写?
2023-01-05:konradkleine/docker-registry-frontend是registry的web界面工具之一.请问部署在k3s中,yaml如何写? 答案2023-01-05: ...
- AccessToken、for_user、get_token
在Django REST framework的SimpleJWT库中,AccessToken是一个类,用于表示一个JSON Web Token (JWT)中的访问令牌部分.访问令牌是一种常见的身份验证 ...
- Django4全栈进阶之路21 项目实战(在线报修):创建App应用和Model模型
创建应用App python manage.py startapp RepairApp 创建模型 在models.py文件中定义一个Repair模型来表示报修单,其中包含以下字段: repair_id ...
- 这可能是最全面的Java面试八股文了
Java的特点 Java是一门面向对象的编程语言.面向对象和面向过程的区别参考下一个问题. Java具有平台独立性和移植性. Java有一句口号:Write once, run anywhere,一次 ...
- CentOS系统重命名
感觉默认的系统名称很难看,得改改,如下 一.查看linux 系统版本信息 [root@iZbp15rmf8lyj2yhq136ebZ ~]# cat /etc/redhat-release CentO ...
- C#/VB.NET:如何从 PowerPoint 演示文稿中提取文本
在学习或者日常工作中,有时我们需要把幻灯片的东西整理成文字,而从 PowerPoint 演示文稿中一张一张的整理手动复制粘贴,整个过程会非常费精力且耗时.那么怎么样才能比较轻松且快速地提取PowerP ...
- 在技术圈混,不知道这些你就 OUT 了
技术之路就是漫长的打怪升级,不断学习前人的踩坑经验才能提升自己,切忌闭门造车.所谓独乐乐不如众乐乐,强烈推荐以下公众号,让你的生活多点意思,希望小伙伴们能在 coding 的路上走的更远. OSC开源 ...
- 我借助 AI 神器,快速学习《阿里的 Java 开发手册》,比量子力学还夸张
我平时经常要看 PDF,但是我看书贼慢,一个 PDF 差不多几十上百页,看一遍要花挺长时间. 我记性还不好,看完之后,过些日子就记不清 PDF 是讲什么的了.为了找到 PDF 里的某些信息,又得再花时 ...
- 项目小结:使用Docker迁移服务到离线服务器
前言 最近遇到的这个场景,需要把之前开发的一套系统迁移到一个离线的服务器上,这个服务器有点麻烦,接入VPN后通过堡垒机才能访问,速度也很慢,遇到不少坑,本文记录一下迁移过程. 基本信息 原本这套系统也 ...