首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法处理控制(NotifyIcon)

无法处理控制(NotifyIcon)
EN

Stack Overflow用户
提问于 2020-02-27 09:51:42
回答 1查看 104关注 0票数 0

在我的家庭作业应用程序中,我需要创建一个应用程序,在该应用程序中还需要使用NotifyIcon。

我所面临的问题是,我无法理解为什么代码永远不会到达Dispose事件。

我正在实现"IDisposable";(为了能够在NotifyIcon上调用Dispose )。但是,在dispose事件中添加一个断点之后,我可以看到无法到达它。我真的不明白为什么它不能到达那里。

我目前正在跟踪这个线程,以帮助我处理这个控件:

NotifyIcon remains in Tray even after application closing but disappears on Mouse Hover

有人能帮我理解为什么会发生这种事吗?或者我错过了什么?

我的类代码:

代码语言:javascript
复制
    private NotifyIcon trayIcon;

    public void CreateTrayIcon()
    {
        if (trayIcon == null) { trayIcon = new NotifyIcon(); }
        trayIcon.Text = "My Tray Application";
        trayIcon.Icon = Properties.Resources.AppIcon;
        trayIcon.Disposed += TrayIcon_Disposed;

        trayIcon.Visible = true;
    }

    private void TrayIcon_Disposed(object sender, EventArgs e) // Unreacheable Code
    {
        if (trayIcon != null) 
        {
            trayIcon.Visible = false;
            trayIcon = null;
        }
    }

    protected virtual void Dispose(bool Disposing)
    {
        if (Disposing)
        {
           trayIcon.Dispose();
        }
    }
    public void Dispose()
    {
        Dispose(true);
        GC.SuppressFinalize(this);
    }

并在主窗体上调用NotifyIcon Dispose;Form_ClosingEvent

代码语言:javascript
复制
private void Form_closing(object sender, FormClosingEventArgs e)
{
    trayIcon.Dispose();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-27 11:35:18

我发现了问题所在。

我的问题背后的原因;实际上是分散注意力。我假设订阅了FormClosing事件(老实说:我确信我已经订阅了它。我一定是做了某种回滚,并错误地把它移走了)。

解决方案:只需要检查事件是否已订阅。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60430400

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档