【问题标题】:Application icon is missing in the taskbar during program start, if another application is active如果另一个应用程序处于活动状态,则程序启动期间任务栏中的应用程序图标丢失
【发布时间】:2011-02-14 05:13:04
【问题描述】:

我编写了一个具有自定义(非标准)图标的 WPF 应用程序。还实现了启动画面。

如果我启动应用程序并等待它加载,图标会正确显示。

但是,如果我在启动屏幕显示之前启动我的应用程序并切换到另一个应用程序(例如 Outlook),则该图标不会显示在 Windows 任务栏中。

如果我通过 alt+tab 切换到我的应用程序,图标会直接出现。

有什么想法吗?

【问题讨论】:

    标签: wpf icons taskbar splash-screen


    【解决方案1】:

    我在使用 Winforms 应用时遇到了完全相同的问题。我找到的解决方案也可能对您的 WPF 应用有所帮助。

    只需确保窗口的标题没有更改,直到最后一刻。在 Winforms 中,我将 Text = "blahblah" 行从 Form_load 事件中移到了 Form1_Shown 事件中,现在隐藏的任务栏图标问题已经消失了。

    【讨论】:

      【解决方案2】:

      我用另一种语言(PowerBuilder,而不是 .Net 基础)编写的程序遇到了同样的问题,它的行为完全相同。如果它影响的不仅仅是 WPF,则一定是 Windows 问题。所以一定有办法解决这个问题。

      如果“我的”任务栏项未处于活动状态,框架可能会以错误的方式请求它。

      将焦点重新设置回应用程序时,任务栏图标会重新出现。

      一个粗略的解决方案是这样做(伪代码):

      application.Hide();
      application.Show()
      

      另一种解决方案(伪代码):

      application.SetRedraw(False);
      application.Show();
      application.SetRedraw(True);
      

      但这会产生令人讨厌的闪烁。仅“重新激活”或“重绘”工具栏的解决方案会更好!

      问题的原因(在我的非 WPF 案例中)是程序在主窗口的构造函数完成之前显示 UI。 IE。在所有初始化代码完成之前强制重绘/显示窗口。这可能会导致 Windows 认为窗口不是应用程序,而是启动屏幕的“对话框”,而不是分配任务栏项目。当我设法删除过早显示主 GUI 的代码时,问题就消失了。

      【讨论】:

        【解决方案3】:

        我在某些操作系统上看到了类似的问题,但不是全部。当我切换程序时,我在任务栏中的图标更改为默认应用程序 onw(“空窗口”)。这似乎是 WPF 本身的问题,而不是您的程序的问题。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-06-11
          • 1970-01-01
          • 2018-02-05
          • 2020-08-14
          • 1970-01-01
          • 2011-08-04
          相关资源
          最近更新 更多