【winForm取消窗体关闭操作并隐藏到系统托盘操作以及打包exe】

这篇具有很好参考价值的文章主要介绍了【winForm取消窗体关闭操作并隐藏到系统托盘操作以及打包exe】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

场景:点击窗体关闭按钮并隐藏在系统托盘里显示小图标,小图标右键有显示窗体和退出两个按钮以及最后打包成exe

【winForm取消窗体关闭操作并隐藏到系统托盘操作以及打包exe】
1.在主页form窗体拖入控件notifyIcon和contextMenuStrip控件
设置notifyIcon1控件属性:

contextMenuStrip为contextMenuStrip1
Icon选择一个图标
Text输入你想起托盘的名称

notifyIcon1事件里设置

        /// <summary>
        /// 点击鼠标"左键"发生
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
        {
            //点击鼠标"左键"发生
            if (e.Button == MouseButtons.Left)
            {
                this.Visible = true;                        //窗体可见
                this.WindowState = FormWindowState.Normal;  //窗体默认大小
                this.notifyIcon1.Visible = true;            //设置图标可见
            }
        }

设置contextMenuStrip控件新增两个按钮
【winForm取消窗体关闭操作并隐藏到系统托盘操作以及打包exe】
然后双击编辑“显示”按钮点击事件

 this.Show();                                //窗体显示
 this.WindowState = FormWindowState.Normal;  //窗体状态默认大小
 this.Activate();

编辑“退出”按钮点击事件

 //点击"是(YES)"退出程序
    if (MessageBox.Show("确定要退出程序?", "安全提示",
                  System.Windows.Forms.MessageBoxButtons.YesNo,
                  System.Windows.Forms.MessageBoxIcon.Warning)
          == System.Windows.Forms.DialogResult.Yes)
      {
          notifyIcon1.Visible = false;   //设置图标不可见
          this.Close();                  //关闭窗体
          this.Dispose();                //释放资源
          Application.Exit();            //关闭应用程序窗体
      }

最后设置主窗体FormClosing事件

//窗体关闭原因为单击"关闭"按钮或Alt+F4
   if (e.CloseReason == CloseReason.UserClosing)
     {
         e.Cancel = true;           //取消关闭操作 表现为不关闭窗体
         this.Hide();               //隐藏窗体
     }

打包:
1.选择项目右键==》选择属性==>调试==>配置==》选择活动(Release)
【winForm取消窗体关闭操作并隐藏到系统托盘操作以及打包exe】
2.选择项目右键==》重新生成==》打开项目文件夹bin\Release文件夹下

3.全选所有文件夹,然后选择添加到压缩文件
【winForm取消窗体关闭操作并隐藏到系统托盘操作以及打包exe】
5.在压缩文件名输入你要起的名称后缀带.exe,然后选择高级选项==》自解压选项【winForm取消窗体关闭操作并隐藏到系统托盘操作以及打包exe】
6.设置提取后运行
【winForm取消窗体关闭操作并隐藏到系统托盘操作以及打包exe】
7.设置模式 解压到临时文件夹以及全部隐藏,然后点击确定,最后再次点击确定打包成功
【winForm取消窗体关闭操作并隐藏到系统托盘操作以及打包exe】

封装公共方法:

 		 /// <summary>
        /// 公历转为农历的函数
        /// </summary>
        /// <param name="solarDateTime">公历日期</param>
        /// <returns>农历的日期</returns>
        public string SolarToChineseLunisolarDate(DateTime solarDateTime)
        {
            System.Globalization.ChineseLunisolarCalendar cal = new System.Globalization.ChineseLunisolarCalendar();

            int year = cal.GetYear(solarDateTime);
            int month = cal.GetMonth(solarDateTime);
            int day = cal.GetDayOfMonth(solarDateTime);
            int leapMonth = cal.GetLeapMonth(year);
            return string.Format("农历{0}{1}({2})年{3}{4}月{5}{6}"
                                , "甲乙丙丁戊己庚辛壬癸"[(year - 4) % 10]
                                , "子丑寅卯辰巳午未申酉戌亥"[(year - 4) % 12]
                                , "鼠牛虎兔龙蛇马羊猴鸡狗猪"[(year - 4) % 12]
                                , month == leapMonth ? "闰" : ""
                                , "无正二三四五六七八九十冬腊"[leapMonth > 0 && leapMonth <= month ? month - 1 : month]
                                , "初十廿三"[day / 10]
                                , "日一二三四五六七八九"[day % 10]
                                );
        }
        /// <summary>
        /// 根据年月日计算星期几(Label2.Text=CaculateWeekDay(2004,12,9);)
        /// </summary>
        /// <param name="y">年</param>
        /// <param name="m">月</param>
        /// <param name="d">日</param>
        /// <returns></returns>
        public string CaculateWeekDay(int y, int m, int d)
        {
            if (m == 1) m = 13;
            if (m == 2) m = 14;
            int week = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7 + 1;
            string weekstr = "";
            switch (week)
            {
                case 1: weekstr = "星期一"; break;
                case 2: weekstr = "星期二"; break;
                case 3: weekstr = "星期三"; break;
                case 4: weekstr = "星期四"; break;
                case 5: weekstr = "星期五"; break;
                case 6: weekstr = "星期六"; break;
                case 7: weekstr = "星期日"; break;
            }

            return weekstr;
        }
 		/// <summary>
        /// 计算两个日期时间差多少天
        /// </summary>
        /// <param name="dateStart"></param>
        /// <param name="dateEnd"></param>
        /// <returns></returns>
        private int DateDiff(DateTime dateStart, DateTime dateEnd)

        {
            DateTime start = Convert.ToDateTime(dateStart.ToShortDateString());

            DateTime end = Convert.ToDateTime(dateEnd.ToShortDateString());

            TimeSpan sp = end.Subtract(start);

            return sp.Days;

        }

踩坑点:

1.最后打包的时候压缩包压缩路径需要换成非项目里的路径或起的名称不能与文件夹已有exe重名文章来源地址https://www.toymoban.com/news/detail-458588.html

到了这里,关于【winForm取消窗体关闭操作并隐藏到系统托盘操作以及打包exe】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C# 实现winform软件最小化到系统托盘,开机自启动

      问题描述   用户的电脑是win7系统,应用系统在用户电脑上运行时部分功能需要访问注册表,但是使用这些功能时会提示用户没有权限访问注册表。 原因分析   win7及后续高版本系统对用户的权限控制比较严,就算用户的权限较高,但用户启动程序时默认还是以普通用

    2024年02月03日
    浏览(45)
  • 《Linux操作系统编程》 第十章 线程与线程控制: 线程的创建、终止和取消,detach以及线程属性

    🌷🍁 博主 libin9iOak带您 Go to New World.✨🍁 🦄 个人主页——libin9iOak的博客🎐 🐳 《面试题大全》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 🌊 《IDEA开发秘籍》学会IDEA常用操作,工作效率翻倍~💐 🪁🍁 希望本文能够给您带来一定的帮助🌸文章粗浅,敬

    2024年02月11日
    浏览(90)
  • Access + VBA 固定资产管理系统 —— 显示/隐藏窗体设置

    本系统是基于Access数据库和VBA进行开发的,由于Access数据库拥有强大的窗体创建和设置功能,固本系统已Access数据库为主,VBA编程为辅,VBA主要完成了部分相对复杂功能的实现。 若设置为按钮控制程序背景的显示和隐藏: 创建相关按钮,如”显示程序背景“和”隐藏程序背

    2024年02月06日
    浏览(91)
  • Linux(Ubuntu)系统临时IP以及静态IP配置(关闭、启动网卡等操作)

    前提是Linux下的网络桥接不能用,不能通过识别网卡来添加IP地址,只能通过静态写死的方式去设置IP 对于CentOS版本下的静态IP的配置可以参考这篇 Linux系统静态IP配置(CentOS) Linux终端输入: sudo ifconfig 192.168.XXX.XXX 或者 su root 进入root用户下( su ubuntu ,ubuntu是用户名再退回来

    2024年02月13日
    浏览(45)
  • 完全隐藏Win 10托盘中自带的安全中心图标

    事情是这样的,每次看到这个图标总是让我不爽,即使收纳到隐藏栏之后,我也受不了。再者,如果我要是在安装第三方安全软件后,这个隐藏栏就有自带和第三方安全软件图标,而且显得冗余,所以我打算把自带的完全隐藏。 下面就是我使用的2种具体方法: 第1步: 打开

    2024年02月06日
    浏览(66)
  • 关于el-dialog中@close事件和取消确认按钮并用,会触发两次关闭表单的操作

    el-dialog绑定了close方法,el-dialog中的子元素【确认按钮】绑定了click事件,当执行子元素绑定的click事件时,除执行子元素绑定的click方法中的语句,还会执行close中的语句。当绑定的close和click事件中执行逻辑不一致时,最终实现的是close中的逻辑。 当close和click按钮的业务逻辑

    2024年02月04日
    浏览(52)
  • 【WinForm】WinForm常见窗体技术汇总

    窗体调用外部程序与渐变窗体 按回车键跳转窗体中的光标焦点 剪切板操作 实现拖放操作 移动的窗体 抓不到的窗体 MDI窗体 提示关闭窗体 窗体正在变色: 窗体调用网络页面–启动浏览器: 窗体调用本地程序–启动记事本: 按下enter键,光标会向下移动: 第一个text中输入内

    2024年02月08日
    浏览(51)
  • winform窗体

    WinForm,是·Net开发平台中对Windows Form的一种称谓。WinForm是窗体应用程序,由若干个窗体应用组成,基于C/S架构 (1)基本控件: label 文本提示 TextBox 文本框 button      按钮 radiobutton 单选按钮 panel       面板(相当于小容器) check 复选框 combox        下拉列表框 listbox  列表

    2024年02月08日
    浏览(71)
  • 【C#】【WinForm】MDI窗体

    MDI窗体的相关学习使用 1、设置MDI父窗体  在属性中找到IsMdiContainer选项,设置为True 2、添加MDI子窗体,在项目中依次选择添加-窗体,然后一直默认即可  添加后的项目目录(Form1为父窗口,Form2、Form3为子窗口)  3、在Form1.cs中,创建对应MDI子窗口的对象并调用显示出来 保存

    2024年02月08日
    浏览(51)
  • Winform窗体使用IOC容器

    Winform窗体如何使用IOC容器呢?在nuget中添加Microsoft.Extensions.DependencyInjection 接着在Program类Main方法中添加一下代码 在此类中继续补充以下代码 以后你的注入只需要在 static void ConfigureServices(IServiceCollection services)这个方法中注入就行了 全景图:   我把窗体也注入了,不过不是

    2024年02月12日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包