【问题标题】:How to prevent application shutdown on close window?如何防止关闭窗口时关闭应用程序?
【发布时间】:2015-08-16 14:59:11
【问题描述】:

我正在使用 WPF,但没有主窗口(我已经覆盖了 OnStartup 方法)。但是当用户点击某个菜单项时,我想显示设置窗口。

App.xaml.cs:

protected override void OnStartup(StartupEventArgs e)
{
    base.OnStartup(e);

    new MainEnvironment();
}

MainEnvironment.cs:

NotifyIcon notifyIcon;
Settings settings_wnd = new Settings(); // WPF window

public MainEnvironment()
{
    notifyIcon = new NotifyIcon()
    {
        ...

        ContextMenu = new ContextMenu(new MenuItem[]
        {
            new MenuItem("Settings", contextMenu_settingsButton_Click)
        })
    };
}

void contextMenu_settingsButton_Click(object sender, EventArgs e)
{
    if (!this.settings_wnd.IsVisible)
        this.settings_wnd.Show();
    else
        this.settings_wnd.Activate();
}

问题是当用户关闭这个窗口时,整个应用程序也会退出。为什么?我该如何预防呢?

谢谢

【问题讨论】:

  • 我创建了 2 个不同的 wpf 窗口,当主窗口启动时,打开另一个。我可以关闭任何窗口而不会导致应用程序终止。所以也许你应该发布更多代码。
  • 您在哪个类中运行此代码。this.settings_wnd 是什么?我听起来好像发生了什么是一些代码在窗口关闭时运行,发生异常。该异常没有任何异常处理代码,这会导致应用程序关闭。查看 Windows 中 Applications 树下的 Event Viewer。您应该在那里看到未处理的异常详细信息。 #PsychicDebuging
  • @CliveDM 我的情况不同。我没有主窗口。在 app.xaml.cs 中,在 OnStartup 方法中我只运行 new MainEnvironment();。而在这个类的构造函数中是主要代码。所以大部分时间没有窗户。
  • 小心new MainEnvironment() 调用,如果您不保留引用,垃圾收集器将在触发时立即收集它。

标签: c# wpf


【解决方案1】:

应用程序默认设置为在所有窗口关闭时关闭。您只需将ShutdownMode="OnExplicitShutdown" 添加到您的 App.xaml 文件中即可。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-22
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    相关资源
    最近更新 更多