首页 新闻 会员 周边

重新登录,重新New一个主窗口,在如何不关闭程序的情况下关闭旧的主窗口

0
悬赏园豆:50 [已解决问题] 解决于 2023-05-16 08:59

主界面有一个重新登录按钮,点击按新实例化一个登录界面,重新登录后会重新New一个主窗口,在如何不关闭程序的情况下关闭旧的主窗口
if (loginIdentify != null)
{
LoginWindow loginWindow = new LoginWindow("", loginIdentify);
loginWindow.Show();
}
else
{
bool? flag = MessageWin.ShowWindow("是否退出当前账号登录?", this, MessageBoxButton.YesNo, new SolidColorBrush(Color.FromArgb(160, 0, 0, 0)));
if ((bool)flag)
{
////删除自动登录验证文件
//string filePath = Environment.CurrentDirectory + "\Login\login.txt";
//if (File.Exists(filePath))
//{
// File.Delete(filePath);
//}
////退出当前登录

                    LoginWindow loginWindow = new LoginWindow();
                    loginWindow.Show();

                }
            }

            this.Close();

暂时关闭旧的主窗口执行的是this.close,但是导致整个程序退出

辉煌纪的主页 辉煌纪 | 初学一级 | 园豆:159
提问于:2023-05-12 11:40
< >
分享
最佳答案
0

为啥不在重新登录后,更新主界面的显示数据

收获园豆:50
JianF | 菜鸟二级 |园豆:265 | 2023-05-12 12:22

之前登录账号涉及到的数据、权限都和登录账号相关,直接New个新的主窗口会比较方便一点

辉煌纪 | 园豆:159 (初学一级) | 2023-05-12 14:09

@辉煌纪:
关闭旧的主窗口执行的是this.close前,做个分支,第一退出主界面(MainForm.Close()),第二退出程序(this.Close());

JianF | 园豆:265 (菜鸟二级) | 2023-05-13 09:02
其他回答(3)
0

建议在题目中提供一下你用的什么技术

复制粘贴机器人 | 园豆:702 (小虾三级) | 2023-05-12 11:54
0

如果您想保持应用程序不关闭并关闭旧的主窗口,可以使用以下方法:

首先,将主窗口的Close()方法替换为Hide()方法,以将其隐藏而不是关闭它。

创建一个全局变量来存储当前的主窗口实例,以便稍后关闭它。

在重新登录时,使用新的主窗口实例替换旧的主窗口实例,并将旧的主窗口实例隐藏而不是关闭它。

以下是修改后的代码示例:

csharp

// 全局变量来存储当前主窗口实例
private MainWindow mainWindow;

if (loginIdentify != null)
{
LoginWindow loginWindow = new LoginWindow("", loginIdentify);
loginWindow.Show();
}
else
{
bool? flag = MessageWin.ShowWindow("是否退出当前账号登录?", this, MessageBoxButton.YesNo, new SolidColorBrush(Color.FromArgb(160, 0, 0, 0)));
if ((bool)flag)
{
// 创建新的主窗口实例
MainWindow newMainWindow = new MainWindow();
newMainWindow.Show();

    // 隐藏旧的主窗口实例
    mainWindow.Hide();

    // 更新全局变量
    mainWindow = newMainWindow;
}

}

// 关闭当前窗口实例
this.Hide();
这样,当您点击重新登录按钮时,旧的主窗口将被隐藏,新的主窗口将被创建并显示,而应用程序将继续运行,直到用户手动关闭它。

Technologyforgood | 园豆:5750 (大侠五级) | 2023-05-14 22:49

Hide是一种方法,但是不适合我的项目,我需要确保只有一个主进程在运行。

支持(0) 反对(0) 辉煌纪 | 园豆:159 (初学一级) | 2023-05-16 08:52
0

我的解决方式是将程序关闭方式选择为OnLastWindowClose,然后实例化登录窗口并将其show显示出来,然后执行主窗口关闭。
最后在关闭程序时需要确保程序完全退出。

辉煌纪 | 园豆:159 (初学一级) | 2023-05-16 08:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册