如果另一个应用程序处于活动状态,则程序启动期间任务栏中缺少应用程序图标

时间:2010-04-30 11:59:25

标签: wpf icons taskbar splash-screen

我写了一个WPF应用程序,它有一个自定义(不是标准)图标。还实现了Splashscreen。

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

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

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

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

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

也许框架要求"我的"任务栏项如果不活动,则会以错误的方式生效。

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

原始解决方案就是这样做(伪代码):

application.Hide();
application.Show()

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

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

但这会造成令人讨厌的眨眼。只是“重新激活”的解决方案。或者"重绘"工具栏会更好!

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

答案 1 :(得分:0)

我在Winforms应用程序中遇到了完全相同的问题。我找到的解决方案也可以帮助您的WPF应用程序。

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

答案 2 :(得分:-1)

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