打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
WinForm登陆:窗体间的数据传递

1. 登陆逻辑

  • FrmMain 为主窗体(启动窗体)
  • FrmLogin 为登陆窗体

在“主窗体”中使用ShowDialog()方法显示“登陆窗体”,并通过“登陆窗体”的DialogResult告知“主窗体”是否登陆成功。

1.1 主窗体:

private void FrmMain_Load(object sender, EventArgs e){    FrmLogin frm = new FrmLogin();    if (frm.ShowDialog() == DialogResult.OK)    {        // 执行主窗体的一些初始化内容    }    else    {        this.Close();    // 关闭主窗体    }}

1.2 登陆窗体:

private vode btn_Login_Click(object sender, EventArgs e){    this.DialogResult = DialogResult.OK;}

2. 窗体间的数据传递

“登陆窗体”在执行完毕后,需要将登陆用的信息传递给“主窗体”,其传递的过程就是“暂时”将用户信息存在“主窗体”可以获取的“地方”,根据“地方”不同可以有一下几种方案。

新建 User.cs

public class User {    public string username;    public User(string username)    {        this.username = username;    }}

2.1 将数据暂存在“登陆窗体”的Tag属性上

2.1.1 登陆窗体:

private vode btn_Login_Click(object sender, EventArgs e){    this.Tag = new User('rianman');    this.DialogResult = DialogResult.OK;}

2.1.2 主窗体:

private void FrmMain_Load(object sender, EventArgs e){    FrmLogin frm = new FrmLogin();    if (frm.ShowDialog() == DialogResult.OK)    {        User user = frm.Tag as User;    // 此处获取“登陆窗体”传递过来的数据    }    else    {        this.Close();    // 关闭主窗体    }}

2.2 将数据暂存在“主窗体”的Tag属性上

2.2.1 登陆窗体:

private vode btn_Login_Click(object sender, EventArgs e){    FrmMain main this.Owner as FrmMain;    main.Tag = new User("rainman");    this.DialogResult = DialogResult.OK;}

2.2.2 主窗体:

private void FrmMain_Load(object sender, EventArgs e){    FrmLogin frm = new FrmLogin();    if (frm.ShowDialog() == DialogResult.OK)    {        User user = this.Tag as User;    // 此处获取“登陆窗体”传递过来的数据    }    else    {        this.Close();    // 关闭主窗体    }}

2.3 将数据暂存在类的“静态成员”上

2.3.1 新建Context.cs

public class Context{    public static User LoginUser = null;}

2.3.2 登陆窗体:

private vode btn_Login_Click(object sender, EventArgs e){    Context.LoginUser = user;    this.DialogResult = DialogResult.OK;}

2.3.3 主窗体:

private void FrmMain_Load(object sender, EventArgs e){    FrmLogin frm = new FrmLogin();    if (frm.ShowDialog() == DialogResult.OK)    {        User user = Context.LoginUser;    // 此处获取“登陆窗体”传递过来的数据    }    else    {        this.Close();    // 关闭主窗体    }}

2.4 将数据暂存在“主窗体”的特定属性上

2.4.1 登陆窗体:

private vode btn_Login_Click(object sender, EventArgs e){    FrmMain main = this.Owner as FrmMain;    main.LoginUser = new User("rainman");    this.DialogResult = DialogResult.OK;}

2.4.2 主窗体:

public user LoginUser { get; set; }private void FrmMain_Load(object sender, EventArgs e){    FrmLogin frm = new FrmLogin();    if (frm.ShowDialog() == DialogResult.OK)    {        User user = this.LoginUser;    // 此处获取“登陆窗体”传递过来的数据    }    else    {        this.Close();    // 关闭主窗体    }}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
《C#语言程序设计项目教程》第11章 综合项目——小账本写字字帖
登录成功后关闭登录窗体显示主窗体的三种方法
用C#写一个简单的Login窗口
C#,winform,ShowDialog,子窗体向父窗体传值
C# IP地址段端口扫描器封装调用
详解WinForm窗体间交互的方法
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服