【问题标题】:Windows Forms NotifyIcon disappers randomly in WPF applicationWindows 窗体 NotifyIcon 在 WPF 应用程序中随机消失
【发布时间】:2015-04-15 12:44:16
【问题描述】:

我有一个 WPF 应用程序,它包含一个长时间运行的主窗口。 在 MainWindow 构造函数中定义并初始化我的 notifyIcon 如下。

 notifyIcon = new System.Windows.Forms.NotifyIcon();
                if (File.Exists(logoFile))
                {
                    BitmapImage image = new BitmapImage(new Uri(logoFile, UriKind.Absolute));
                    this.Icon = image;
                    notifyIcon.Icon = new System.Drawing.Icon(logoFile);
                    this.gridAbout_imgLogo.Source = image;
                }
                else
                {
                    using (Stream iconStream = Application.GetResourceStream(new Uri("pack://application:,,,/APP;component/Resources/Logo.ico")).Stream)
                    {
                        System.Drawing.Icon defaultIcon = new System.Drawing.Icon(iconStream);
                        notifyIcon.Icon = defaultIcon;
                        BitmapImage image = new BitmapImage(new Uri("pack://application:,,,/APP;component/Resources/Logo.ico"));
                        this.Icon = image;
                        this.gridAbout_imgLogo.Source = image;
                    }
                }
                if (config != null)
                    notifyIcon.Text = config.app_name;
                else
                    notifyIcon.Text = "APP";
                notifyIcon.DoubleClick += notifyIcon_DoubleClick;
                notifyIcon.Visible = true;
                System.Windows.Forms.ContextMenu m = new System.Windows.Forms.ContextMenu();
                System.Windows.Forms.MenuItem mi = new System.Windows.Forms.MenuItem();
                mi.Text = "Show App Status";
                mi.Click += (s, e) => ShowApplication();
                m.MenuItems.Add(mi);

# if DEBUG
                System.Windows.Forms.MenuItem mi1 = new System.Windows.Forms.MenuItem();
                mi1.Text = "Exit";
                mi1.Click += (s, e) => Application.Current.Shutdown();
                m.MenuItems.Add(mi1);
# endif

                notifyIcon.ContextMenu = m; 

有时通知图标会从托盘中消失。没有 nofityIcon.Visible = false 之类的代码。 当我检查任务管理器时,我可以看到我的应用程序正在运行。

还有其他导致 NotifyIcon 异常行为的原因以及补救措施吗?

【问题讨论】:

    标签: wpf windows notifyicon


    【解决方案1】:

    请检查系统托盘中的通知图标设置。控制面板-> 通知区域图标-> 选中“始终显示所有图标”复选框(Windows 7)。

    【讨论】:

    • 是的,我检查了所有的图标。图标不见了。
    • 1.图标是否出现在启动应用程序时。 2.你能告诉我什么动作使图标不可见,双击,鼠标右键? 3. logoFile 存在吗?
    • 是的,图标出现在应用程序的开头。我不知道它何时消失但随机消失。是的,标识文件存在。从另一篇文章中,我了解到通知图标的初始化与 UI 不同的线程会导致类似的错误。不幸的是,这也是我的情况。现在,我更改了逻辑,使其仅在主 UI 线程上初始化。让我们看看它是怎么回事!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    • 2012-06-06
    • 2011-01-04
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多