C#系统托盘功能实现

功能

软件在单击关闭按钮时,并不会退出进程,而是在任务栏显示一个系统托盘图标

知识点

notifyicon控件

命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll

指定可在通知区域创建图标的组件。 此类不能被继承。

通知区域中的图标是计算机后台运行的进程的快捷方式,例如病毒防护程序或音量控制。 这些进程不附带自己的用户界面。 该 NotifyIcon 类提供了一种在此功能中编程的方法。 该 Icon 属性定义显示在通知区域中的图标。 图标的弹出菜单使用 ContextMenu 属性进行寻址。 该 Text 属性分配工具提示文本。 为了使图标显示在通知区域中, Visible 属性必须设置为 true。

ContexMenuStrip控件

命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll

表示快捷菜单

ContextMenuStrip 替换了 ContextMenu。 可以将 a ContextMenuStrip 与任何控件相关联,右键单击会自动显示快捷菜单。 可以使用 Show 方法以编程方式显示 ContextMenuStrip。 ContextMenuStrip 支持可取消的 Opening 和 Closing 事件来处理动态填充和多单击情形。 ContextMenuStrip 支持图像、菜单项检查状态、文本、访问键、快捷方式和级联菜单。

SizeChanged

每当控件的大小发生更改时,调用与控件事件关联的 SizeChanged 事件处理程序。. 此事件处理程序显示一个消息框,指示控件的大小已更改。

windowState

命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll

获取或设置一个值,该值指示窗体是最小化(Minimized)、最大化(Maximized)还是正常(Normal)。

DialogResult类

命名空间:System.Windows.Forms
程序集:System.Windows.Forms.dll

指定标识符以指示对话框的返回值。

属性枚举值说明
Abort3对话框的返回值是 Abort(通常从标签为“中止”的按钮发送)。
Cancel2对话框的返回值是 Cancel(通常从标签为“取消”的按钮发送)。
Continue11对话框返回值是“继续” (通常从标记为“继续”) 的按钮发送。
Ignore5对话框的返回值是 Ignore(通常从标签为“忽略”的按钮发送)。
No7对话框的返回值是 No(通常从标签为“否”的按钮发送)。
None0从对话框返回了 Nothing。 这表明有模式对话框继续运行。
OK1对话框的返回值是 OK(通常从标签为“确定”的按钮发送)。
Retry4对话框的返回值是 Retry(通常从标签为“重试”的按钮发送)。
TryAgain10对话框返回值是“重试” (通常从标记为“重试”的按钮发送) 。
Yes6对话框的返回值是 Yes(通常从标签为“是”的按钮发送)。
public void DialogResultFuc()
{
	string message = "今天你摸鱼了吗";
    string caption = "热爱工作,热爱生活";
    MessageBoxButton buttons = MessageBoxButton.YesNo;
    DialogResult result;
    
    result = Message.Show(this,message,caption,buttons);
    if(result == DialogResult.Yes)
    {
        this.Close();
    }
        
}

Application类

命名空间:System.Windows
程序集:PresentationFramework.dll

封装 Windows Presentation Foundation 应用程序。

Application 是封装 WPF 应用程序特定功能的类,包括:

应用程序生存期:Activated、、Current、、RunSessionEndingDeactivatedExitShutdownDispatcherUnhandledException、。 StartupShutdownMode

应用程序范围窗口、属性和资源管理:FindResource、、GetContentStream、、GetResourceStream、LoadComponent、MainWindowProperties、Resources、StartupUri。 Windows

命令行参数和退出代码处理:Application.Startup、、Application.ExitApplication.Shutdown。

导航:FragmentNavigation、、LoadCompleted、Navigated、NavigationProgressNavigating、NavigationStoppedNavigationFailed、、SetCookie。 GetCookie

MessageBoxButton

命名空间:System.Windows
程序集:PresentationFramework.dll

指定显示在消息框上的按钮。 用作 Show 方法的参数。

字段枚举值说明
OK0消息框显示“确定”按钮。
OKCancel1消息框显示“确定”和“取消”按钮。
YesNo4消息框显示“是”和“否”按钮。
YesNoCancel3消息框显示“是”、“否”和“取消”按钮。

实现步骤

画面组态

添加控件notificon。

将notiicon控件属性中contextMenuStrip修改为ContentMenuStrip控件的Name属性值。

在属性值ICon修改自己相应的图标,格式为.icon

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GTkzAMs4-1658760546997)(C:\Users\buluw\AppData\Roaming\Typora\typora-user-images\image-20220725223503629.png)]

添加控件ContentMeunStrip控件

修改控件的属性集合值,增加退出主界面显示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2XVynZqo-1658760546998)(C:\Users\buluw\AppData\Roaming\Typora\typora-user-images\image-20220725223827677.png)]

代码编写

根据窗体不同变化,修改notiicon的可见性

根据notificon事件,窗体变化

操作快捷菜单事件,窗体随之变化

private void Form1_SizeChanged(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Normal)
            {
                notifyIcon1.Visible = false;
            }
            else if (this.WindowState == FormWindowState.Minimized)
            {
                this.Hide();
                notifyIcon1.Visible = true;
            }

        }

        private void notifyIcon1_DoubleClick(object sender, EventArgs e)
        {
            this.Show();
            this.WindowState = FormWindowState.Normal;
        }

        private void 主界面显示ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            notifyIcon1_DoubleClick(null, null);
        }

        private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            DialogResult result = MessageBox.Show("确定退出吗?", "退出",
                MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
            if (result == DialogResult.OK)
                Application.ExitThread();
            else
                this.WindowState = FormWindowState.Minimized;
        }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yue008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值