【发布时间】:2014-12-12 15:39:25
【问题描述】:
登录到我们的 ClickOnce 应用程序后,任务栏中的图标消失了。
一些细节:这个应用程序,我们称之为 ThisApp,最初是用 .NET 2.0 (VB) 编写的,并且已经向前迁移到 .NET 4.0 但是这个问题一直存在。在 Windows 7 中(我认为它在 Vista 和 XP 中做了同样的事情......)它的行为如下:
当您转到“开始”>“所有程序”>“ThisApp”并首次启动它时,该图标会按原样出现在任务栏中。您首先会看到一个登录屏幕。如果您输入正确的凭据,登录屏幕将被应用程序的实际 UI 取代,但与此同时,任务栏中的图标会消失。您仍然可以看到应用的 UI 屏幕,但任务栏图标不见了。
此时,如果您碰巧最小化了该应用程序,实际上没有办法将其恢复,只能再次转到 > 所有程序 > ThisApp,它会给您一个通知,上面写着“ThisApp 的一个实例是已经在运行”,但至少此时它会将图标恢复到任务栏。
如果在登录后并且图标丢失时,您碰巧点击了另一个窗口并将 ThisApp 发送到后台,则图标仍然丢失。但是,如果您随后单击 ThisApp 的窗口并将其拉回最前面,图标会突然返回到任务栏。
我已经在调试中逐步完成了初始登录过程。我查看了跟踪日志。我查看了 Windows 事件日志。我花时间在谷歌上。我找不到任何关于为什么会发生这种情况的线索。它已经持续了多年,从来没有成为一个足以保证任何开发人员时间的问题。但是现在(终于?)一个足够大的客户抱怨这个,我们需要最终解决这个问题。我发现了很多关于 ClickOne 应用程序及其图标的问题,但我没有找到解决这个特定问题的问题。
有人见过这样的吗?有没有处理过?有什么想法吗?
谢谢!!!
编辑 -- 更多信息:
我仍然对此感到困惑。以下是我能够弄清楚的:
第一:
当应用程序首次启动时,会在应用程序检查配置、测试与数据库的连接、加载用户缓存的数据等时显示启动页面。启动页面可见时,图标会很好地显示在任务栏中。初始设置完成后,启动页面将被隐藏。此时,任务栏图标消失。
第二:
在启动页面被隐藏后,登录表单被初始化并显示。显示时,该图标再次在任务栏中可见。它会一直留在那里,直到用户验证并关闭表单,此时图标再次从任务栏中消失。
第三:
登录表单一关闭,启动页面就会再次显示,同时完成更多配置并在应用程序(客户端)和服务器之间进行同步。显示启动页面时,任务栏图标会返回。同步完成后,启动页面将被隐藏,任务栏图标又消失了。
第四:
一旦第二个启动页面被隐藏,我们就会显示主窗体。此时,我希望任务栏图标再次显示。但是……它没有。我一直在比较登录表单和主表单的属性,看看它们变得可见,看看我是否能发现任何差异,这些差异可以解释为什么一个显示图标而另一个不显示。我没有看到任何明显的东西。
代码:
下面是创建和加载登录表单的代码的屏幕截图,箭头指向表单可见的行并且图标出现在任务栏中。
下面是创建和加载主窗体的代码的屏幕截图,箭头指向我希望任务栏图标出现的行。表单本身确实出现在这一行,但图标没有。
还有几件事:
- 图标在应用程序的属性中设置
- 在这两种形式中,ShowIcon 和 ShowInTaskbar 都是 true
欢迎任何想法!!!
【问题讨论】:
-
您是否有任何理由将
Visible属性显式设置为True而不是让它自动发生? -
好问题。那原本是不存在的。我只是添加它以查看它是否会使图标保持可见。它没有。但首先设置为假,然后设置为真——这就是诀窍。我不知道为什么。
标签: .net vb.net icons clickonce taskbar