C# winform实现窗体最小化时显示到(桌面右下角)系统托盘

    用C#开发winform桌面程序时,程序启动后,默认是显示在桌面而且在任务栏中有对应的图标。有的时候,需要在程序最小行后,将程序图标仅仅显示在系统托盘,不在任务栏中显示。

    这时,我们需要用到winform控件NotifyIcon,此控件用于运行时期间在  windows 任务栏右侧的通知区域显示图标。实现窗体最小化时显示到(桌面右下角)系统托盘的步骤如下:

    1. 新建窗体,将NotifyIcon控件拖放到窗体上

    2. 设置NotifyIcon控件的Icon属性,Icon的值是显示在系统托盘的图标(和窗体的图标可以不一样)

    3. 设置窗体属性 showintaskbar = false

    经过以上设置,启动程序后,在任务栏中不再显示窗体的图标,右下角系统托盘中也会显示NotifyIcon控件的图标。但是此时最小化窗体后,窗体没有隐藏,注意查看会发现窗体(一般情况下)最小化在桌面的右下角。为了彻底隐藏窗体,我们需要在窗体最小化时隐藏窗体。

    4. 最小化时隐藏窗体,示例代码如下:   

        /// <summary>
        /// 最小化窗体时,隐藏窗体
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void Form1_SizeChanged(object sender, EventArgs e)
        {
            // 判断只有最小化时,隐藏窗体
            if (this.WindowState == FormWindowState.Minimized)
            {
                this.Hide();
            }
        }

    经过此步,最小化窗体后,窗体隐藏,只在右下角的系统托盘中显示NotifyIcon的图标。通常情况下,我们希望在点击NotifyIcon图标时,再显示窗体。但此时我们点击NotifyIcon图标时,发现没有任何反应,和我们希望看到的不一样。这时,我们可以使用如下设置。

    5. 添加点击NotifyIcon图标事件(显示窗体),实例代码如下:

        private void notifyIcon1_Click(object sender, EventArgs e)
        {
            // 正常显示窗体
            this.Visible = true;
            this.WindowState = FormWindowState.Normal;
        }

    经过以上设置,程序启动后,可以最小化隐藏(任务栏中也没有程序图标)并在系统托盘中显示程序指定的图标;在点击系统托盘图标后,也可以重新显示程序窗体。

    当然,我们也可以根据自身需要,给NotifyIcon控件添加右键菜单等,用于显示或关闭程序。或者直接设置窗体的WindowState = Minimized,在启动程序后直接隐藏窗体。

    原文作者:ztnhnr
    原文地址: https://blog.csdn.net/ztnhnr/article/details/108731166
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞