如何打开新窗体后返回原窗体无需关闭重启,含登录与主窗体切换场景
需求实现方案
核心依赖模态窗体/模态组件的特性,全程不需要销毁、重启任意初始窗体,具体实现逻辑如下:
通用核心逻辑
不管是桌面端开发(WinForm/WPF等)还是Web前端开发,逻辑完全一致:
- 全程只实例化1次登录窗体/登录组件、主窗体/主页面,只控制显隐,不做销毁操作
- 二次登录时用模态形式唤起登录窗体,模态特性会自动冻结下层主窗体交互,登录完成后隐藏登录窗体即可自动恢复主窗体操作权限
桌面端(以C# WinForm为例)实现步骤
- 首次启动时设置启动项为
LoginForm,提前全局实例化1次MainForm和LoginForm,全程复用这两个实例 - 首次登录验证成功后执行以下代码:
// 隐藏登录窗,不要调用Close方法避免资源释放 this.Hide(); // 唤起主窗体 mainForm.Show(); - 主窗体功能按钮点击事件中,以模态方式唤起登录窗:
// 复用全局的LoginForm实例,不要重新new loginForm.ShowDialog(this); // 模态窗体关闭后主窗体会自动恢复可操作状态,无需额外配置 - 二次登录验证成功后仅隐藏登录窗即可:
this.Hide();
Web前端实现步骤
- 全局复用同一个登录弹窗组件和主页面,登录弹窗默认隐藏
- 首次登录验证通过后隐藏登录弹窗,显示主页面内容
- 主页面功能按钮点击时,将登录弹窗设置为模态可见状态,模态遮罩会自动拦截主页面所有交互
- 二次登录验证通过后隐藏登录弹窗和遮罩,主页面自动恢复交互能力,无需刷新页面
内容的提问来源于stack exchange,提问作者Stoyan Grozdev
相关产品推荐
相关产品推荐

