0

我有登录窗口。在这个登录窗口中,我正在初始化主窗口。登录成功后,我关闭登录窗口。现在我有另外两个窗口,我从主窗口调用它们。一旦我关闭主窗口,我就可以关闭其他两个窗口以及主窗口。但是程序仍然在内存中运行。我必须从 Visual Studio 手动关闭它。我应该如何完全关闭程序所有实例?这是主窗口关闭事件代码。

private void usimClose(object sender, EventArgs e)
{
   newScreen2.Close();
   newScreen3.Close();  
   this.Close();                        
}

这是我的登录窗口代码。一旦用户点击提交按钮。

 private void btnLogin_Click(object sender, RoutedEventArgs e)
 {
        if (txtUserName.Text.Length == 0)
        {
            errormessage.Text = "Please Enter UserName";
            txtUserName.Focus();
        }
        else
        {                
            LoginStatus _status = _Login.LoginUsimgClient(txtUserName.Text, txtPassword.Password.ToString());

            if (_status.BoolLoginstatus)
            {
                mainWindow.RunApplication();
                string struserName = _status.StringUserFirstName;
                mainWindow.userName.Text = "Welcome " + struserName;
                mainWindow.Show();
                this.Close();                    
            }
            else
            {
                errormessage.Text = _status.StringErrorDescription;
                txtUserName.Text = String.Empty;
                txtPassword.Password = String.Empty;
            }
        }
}
4

4 回答 4

7

尝试Application.Current.Shutdown();

来自MSDN

无论 ShutdownMode 设置如何,显式调用 Shutdown 都会导致应用程序关闭。但是,如果 ShutdownMode 设置为 OnExplicitShutdown,则必须调用 Shutdown 来关闭应用程序。

重要的提示

调用 Shutdown 时,无论是否取消任何打开的窗口的 Closing 事件,应用程序都将关闭。

只能从创建 Application 对象的线程调用此方法。

于 2013-07-19T07:42:24.427 回答
4

您可以使用此关闭所有窗口

App.Current.Shutdown();

或者

你可以手动关闭它

Window parentwin = Window.GetWindow();
parentwin.Close();
于 2013-07-19T10:56:55.120 回答
2

如果您的起点是您的 MainWindow,那么就从那里开始。

首先,在 MainWindow 中托管 LoginForm,并使用 ShowDialog() 强制用户与 LoginForm 交互。将成功/不成功交互的结果返回给 MainForm。

    private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
    {
        var form = new LoginForm();
        var result = form.ShowDialog();

        if (result ?? false)
        {
            // Carry on opening up other windows
        }
        else
        {
            // Show some kind of error message to the user and shut down
        }
    }

否则,从技术上讲,您的 LoginForm 正在托管您的 MainForm,坦率地说,这很奇怪。

于 2013-07-19T10:47:48.953 回答
1

看看我的答案:如何从另一个项目关闭 wpf 窗口

Application.Current.Shutdown() 将以非常突然的方式停止应用程序。

最好优雅地跟踪窗户并关闭它们。

于 2013-07-19T08:25:35.257 回答