2012-03-30 42 views
2

所有,我通过一个MDI WinForm应用程序的一半,并已开始测试我们迄今在几台不同的机器上,我发现所有机器上的以下错误(运行Windows 7/Vista的)。错误在于TaskBar和应用程序内可见的活动状态。这将更容易与图像:奇怪的任务栏行为与MDI WinForm应用程序

答:我将鼠标悬停在任务栏准备启动。

Hovering over the application icon (mouse not displayed)

B.我点击应用程序,它启动没有问题,并显示在任务栏 - 所有好为止。

Launches with no problem

C.等待也许是三秒钟,图标消失不活跃,所以,当我点击它,它会启动我的应用程序的另一个实例,而不是恢复我刚开了一个!?一旦我点击表单并最小化,然后恢复表单,这个问题就消失了!?

Active icon on the Task Bar dies a death

这就奇怪了,我不知道如何去修复它。使用.exe文件启动应用程序时也会出现这种情况,只有在单击应用程序主窗体之前任务栏才会显示。我真的很难过。如果任何人有任何关于这里可能发生的事情的想法,那将会非常感激?谢谢你的时间。

注意。我将问题缩小到了以其他开放形式推出的形式。我已经使用了培训相关选项this.TopLevel = true;的形式Shown事件等,但似乎没有任何工作...

回答

2

所有,

这是通过在主窗体的(MDI父形式的)Shown事件的finally块添加

this.Activate(); 

解决。

感谢您的时间和帮助。

+2

嗯,这是一个解决方法,不是一个办法。你需要为此烦恼,当你必须编写这样的代码时,还有其他的东西可能会出错。首先严格测试Windows + L键(锁定工作站),并确保您的用户界面不会死锁。如果这是原因,请使用.NET中的内置支持启动屏幕。 – 2012-04-16 19:13:39

+0

@HansPassant感谢您的建议。我不确定在这个阶段可能会出现什么问题。我现在开发了许多MDI应用程序,但没有遇到过这种情况。我会留意上述建议。如果'Windows + L'不会导致任何问题,那么可以安全地假设我是一个缺乏实力的人吗?我正在使用我自己的Splash-Screen,但我已经使用过此方法,没有任何副作用。再次感谢评论,我感谢... – MoonKnight 2012-04-16 20:12:29

+0

“我使用我自己的splashscreen”是我猜到的。这是一个非常强烈的暗示,你正在为一个真正的问题进行讨论。 – 2012-04-16 21:22:59

2

我看到了类似的问题,即当它第一次启动的应用程序不会采取焦点,并在窗口就不会显示7任务栏,直到您点击它来激活主窗体。

我从来没有找到真正的原因,但将表单的Text属性从OnLoad覆盖设置移动到构造函数,导致问题消失。非常奇怪,它仍然让我感到不知道为什么它会发生。

不知道这是否适用于您,但我会非常感兴趣的知道您是否也在构造函数外设置了Text。

+0

感谢您的帖子。我仍在发展,并希望有人会有一套解决方案,这将是一个已知的问题。这可能并非如此!当我在开发过程中放慢速度时,我会开始一些详细的测试,其中将包含您的建议。感谢您的时间,我会让你张贴.... – MoonKnight 2012-03-30 13:24:30

+0

我在LOAD活动中做的一件事是加载MDI儿童,我会测试这个的意义并让你知道... – MoonKnight 2012-03-30 13:25:35