【发布时间】:2013-07-19 07:03:44
【问题描述】:
我有登录窗口。在这个登录窗口中,我正在初始化主窗口。 登录成功后,我关闭登录窗口。 现在我有另外两个窗口,我从主窗口调用它们。 一旦我关闭主窗口,我就可以关闭其他两个窗口以及主窗口。 但是程序仍然在内存中运行。我必须从 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;
}
}
}
【问题讨论】:
-
我认为 mainWindow 是您的登录窗口的属性,因此它将登录窗口保存在内存中
-
是的。我认同。那我该怎么解决呢?
-
而不是关闭它,如果我隐藏我的登录窗口 this.Visibility = System.Windows.Visibility.Hidden;但是从主窗口我应该如何关闭登录窗口?
-
尝试在应用的 OnStartup 事件中显示和处理您的登录内容
-
如果我知道您的主窗口是登录窗口的成员,那是不正确的。您应该在启动事件时在 App 类中创建登录窗口,并在登录功能完成后实例化主窗口并显示它。其他窗口模式/不应该将主窗口作为父窗口,以便在主窗口关闭时收集它们。