首页 > 编程语言 >使用C#的窗体显示与隐藏动画效果方案 - 开源研究系列文章

使用C#的窗体显示与隐藏动画效果方案 - 开源研究系列文章

时间:2023-08-06 17:33:43浏览次数:40  
标签:动画 form Visible C# break ShowWindowState 开源 窗体

  今天继续研究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#的窗体隐藏到托盘图标中的动画效果,搭配上次的无边框窗体的效果,更好的能够对窗体的效果进行显示。提供了源码下载及例子,能够直接进行代码复用即可,希望对同样问题的读者能够解决该问题。

标签:动画,form,Visible,C#,break,ShowWindowState,开源,窗体
From: https://www.cnblogs.com/lzhdim/p/17607822.html

相关文章

  • 无涯教程-Perl - continue函数
    描述此函数是流控制语句,而不是函数。如果在块上附加了一个连续块(通常在while或foreach中),则它总是在条件将要再次求值之前执行,就像C中for循环的第三部分一样。因此,即使通过next语句继续执行循环,也可以使用它来增加循环变量。最后,下一个或重做可能会出现在继续块中。......
  • 【VSCode】mac系统利用VSCode配置C++环境
    https://blog.csdn.net/bsy1111/article/details/131056647在官网上看到VSformac不能建C++项目,找到一个教程用VSCode配置一下C++环境可以跑点简单的代码应付一下日常使用,要是有大佬知道怎么在mac上用VisualStudio写C++的话还麻烦不吝赐教......
  • Visual ChatGPT:Microsoft ChatGPT 和 VFM 相结合
    推荐:使用NSDT场景编辑器助你快速搭建可二次编辑的3D应用场景什么是VisualChatGPT?VisualChatGPT是一个包含VisualFoundation模型(VFM)的系统,可帮助ChatGPT更好地理解、生成和编辑视觉信息。VFM能够指定输入输出格式,将视觉信息转换为语言格式,并处理VFM历史记录、优先级......
  • Bazel 如何生成 clangd/clang-tidy 所需的 compile_commands.json
    VSCode中如何使用clang-tidy安装clangd插件禁用ms-cpp插件(VSCode会自动提示有冲突)生成clangd所需的compile_commands.json文件如何生成compile_commands.json文件修改WORKSPACE,添加以下内容load("@bazel_tools//tools/build_defs/repo:http.bzl","http_a......
  • m基于FFT傅里叶变换的QPSK基带信号频偏估计和补偿算法FPGA实现,包含testbench和matlab
    1.算法仿真效果本系统进行了Vivado2019.2平台的开发,并使用matlab2022a对结果进行星座图的显示:   将FPGA的频偏基带QPSK信号和频偏补偿后的QPSK基带信号使用matlab显示星座图,结果如下:   2.算法涉及理论知识概要       QPSK(QuadraturePhaseShiftKeying)......
  • 常见的电商模式 B2B、B2B、C2B、C2C、O2O
    1电商模式市面上有5种常见的电商模式B2B、B2B、C2B、C2C、O2O1.1B2B模式B2B(BusinesstoBusiness),是指商家和商家建立的商业关系,如阿里,1.2B2C模式B2C(BusinesstoConsumer)就是我们经常看到的供应商直接把商品买个用户,即“商对客”模式,也就是我们呢说的商业零售......
  • CentOS 7 安装 Jenkins
    准备工作首选需要安装JAVA环境 https://www.cnblogs.com/cuiyuxi/p/16174178.html如果你的系统没有自带git,那么也需要安装一个yuminstallgit安装:第一种方法sudowget-O/etc/yum.repos.d/jenkins.repohttps://pkg.jenkins.io/redhat-stable/jenkins.reposudorpm-......
  • C++动态规划经典试题解析之打家劫舍系列
    1.前言力扣上有几道与打家劫舍相关的题目,算是学习动态规划时常被提及的经典试题,很有代表性,常在因内大大小小的社区内看到众人对此类问题的讨论。学习最好的方式便是归纳总结、借鉴消化,基于这个目的,本文对此类问题也做了讲解,在一些优秀思想的基础上添加了个人观点。闲话少说,进入......
  • C# 类型的扩展方法定义
    C#类型的扩展方法定义扩展方法就是类型的静态方法属性,比如:.ToString()其实是可以自定义类型的方法的,按如下操作:1、定义静态类​namespaceExtenClass​{​publicstaticclassObjectExtention{}​}  2、定义静态方法,方法的第一个参数必须是thisTYPEPARATYP......
  • 表单,文件上传,cookie,session
    目录表单,表单验证文件包含,文件上传cookiesession1.表单,表单验证表单表单的基本使用php上传表单,当处理HTML表单时,PHP能把来自HTML页面中的表单元素自动变成可供PHP脚本使用。HTML中有一个专门用于提交数据的标签:,通过这个标签可以很容易的收集用户输入.form......