WinForm:一个登陆窗体引发的问题系列(五):窗口跳转
在实际项目中,并不会是一个登陆窗体单独存在的,一般我们会放在主窗口前进行调用的,这里有两种方法
注:frmMain 代表主窗口
Login 代表登陆窗口
第一种方法
在private void frmMain_Load(object sender, EventArgs e) 方法里添加以下代码
f2.ShowDialog();
if (f2.DialogResult == DialogResult.OK)
{
MessageBox.Show("hello");
}
else
{
this.Close();
}
在private void btnLogin_Click(object sender, EventArgs e)里添加以下代码
if (Reader.HasRows)//判断是否有查询到对象的数据
{
this.DialogResult = DialogResult.OK;
this.Close();
}
主要原理就是利用的DialogResult = DialogResult.OK来实现的,
首先程序load主frmMain,主frmMain就会new一个Login并弹出登陆窗口,在登陆窗口验证密码正确以后设置DialogResult.OK这一句,再将对话框关闭。关闭以后from_load方法继续运行判断弹出的登陆框f2的DialogResult是否是ok,如果是,则加载主表单,如果否,则关闭主表单。
第二种方法:
在program.cs里改写Main方法
将 Application.Run(new frmMain());改为
f1.ShowDialog();
if (f1.DialogResult == DialogResult.OK)
{
Application.Run(new frmMain());
}
else
{
return;
}
在private void btnLogin_Click(object sender, EventArgs e)里添加代码 同方法一
在main方法运行的时候就先加载f1登陆框进行验证,如果验证通过才run(new frmMain())。如果不通过则返回。
总结:
还有一种就是将登陆框hide,直接是 this.hide()而不是this.close()。以上这两种方法,第二种比第一种简单一些,它们都可以避免X掉登陆框之后任然加载主表单的情况。同时这两种方法都不会出现主次窗口都显示和关掉一个窗口另外一个也关闭的情况
作者:Jason_z(开发者的网上家园 - 博客园)
出处:http://www.cnblogs.com/Jason_z/
文章版权归本人所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现