繁体   English   中英

如果我在Visual Studio之外运行exe,则无法激活事件

[英]Deactivate event not firing if i run exe outside Visual Studio

我的Windows应用程序中有以下代码行。

下面是单击托盘图标单击时触发的代码,NotifyForm是正常的Windows窗体。

            ExceptionManager.Process(
            () =>
            {
                if (notifyForm == null)
                {
                    notifyForm = new NotifyForm();
                    notifyForm.Deactivate += (o, args) =>
                    {
                        notifyForm.Close();
                    };

                    notifyForm.Disposed += (o, args) =>
                    {
                        notifyForm = null;
                    };
                }

                if (!notifyForm.Visible)
                {
                    notifyForm.ShowPopup();
                }
                else
                {
                    notifyForm.Close();
                }

            }, "Policy");

窗体关闭正常,当我通过Visual Studio运行它时,如果导航到Release文件夹并显式运行exe,则永远不会触发Deactivate事件。 帮助对此表示赞赏。

只是有关更多信息,notifyForm是通知弹出窗口,单击托盘图标,该弹出窗口将显示在托盘上方。

另外,我尝试通过Visual Studio在发布模式下运行应用程序,并且运行良好。 当我在工作室之外运行它时,唯一的问题开始发生。

我已验证exe是最新的。

编辑-基本上,我有一个窗体,该窗体是在单击任务栏图标时打开的,并且希望单击桌面或某些应触发停用事件的窗体,这种情况不会发生。 不知道为什么。 :(

您需要在发行版中编译代码以更新.exe!

编辑:也许此链接可以帮助您

感谢你的帮助。

调用下面的方法,在弹出后解决了我的问题。

notifyForm.Activate();

再次感谢。

因为VS在一个不错的调试环境中运行代码。 即使在发布模式下。 与在调试器外部运行相比,它可使引用的生存期更长。

可能会调用将notifyForm存储在停用时仍处于活动状态的范围内。 最简单的是一个类变量。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM