将Winform窗体程序缩到System tray的示例代码
  WBP15ByhMECz 2023年11月02日 18 0

网上有很多将Winform窗体缩到 System tray的示例, 但多数不好用.
这里是一个简单示例, 使用了Visual studio自带的 NotifyIcon 控件和一个快捷菜单 contextMenuStrip控件.

增加一个 contextMenuStrip 控件, 新增两个菜单项: 显示界面和退出系统.
增加一个 NotifyIcon 控件, 设置它的图标, 并绑定上面的菜单组件.

C#代码示例:

public partial class Form1 : Form
{
private readonly string APPLICATION_NAME = "我的程序";
private bool appShouldClose = false;

public Form1()
{
    InitializeComponent();
}

/// <summary>
/// 恢复显示主界面
/// </summary>
private void showUI()
{
    this.Show();
    this.WindowState = FormWindowState.Normal;
    notifyIcon1.Visible = false;
}

/// <summary>
/// trayIcon 双击鼠标用来显示主界面
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
    showUI();
}

/// <summary>
/// trayIcon 的快捷菜单项[显示主界面]的处理函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripMenuItemOpen_Click(object sender, EventArgs e)
{
    showUI();
}

/// <summary>
/// trayIcon 的快捷菜单项[退出系统]的处理函数
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void toolStripMenuItemExit_Click(object sender, EventArgs e)
{
    var result = MessageBox.Show("请确认是否要退出系统?", "请确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
    if (result == DialogResult.Yes)
    {
        appShouldClose = true;
        this.Close();
    }
}

/// <summary>
/// 缩小窗体到 sys tray
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    if (appShouldClose)
    {
        //nothing
    }
    else if (e.CloseReason == CloseReason.UserClosing)
    {
        e.Cancel = true;
        this.WindowState = FormWindowState.Minimized;
        this.Hide();
        notifyIcon1.Visible = true;
        notifyIcon1.ShowBalloonTip(1000, APPLICATION_NAME, "已最小化到系统托盘", ToolTipIcon.Info);
    }
}
}



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: elk分布式日志系统 下一篇: linux常用命令
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
WBP15ByhMECz