WinForm登陆:窗体间的数据传递
2024-10-15 07:52:07
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(); // 关闭主窗体
}
}
最新文章
- Sprint计划
- lucene中FSDirectory、RAMDirectory的用法
- Android Studio使用教程-菜单(Edit)
- canvas API ,通俗的canvas基础知识(二)
- LINQ之路 3:C# 3.0的语言功能(下)
- PAT (Basic Level) Practise:1040. 有几个PAT
- Fresco好案例
- 编译QFileSystemModel
- unity的一些tips
- MySQL(一)MySQL基础介绍
- 【代码审计】XYHCMS V3.5任意文件读取漏洞分析
- final、finally、finalize的用法
- 关于SharedPreferences存储数据的使用方法
- hdu4403A very hard Aoshu problem 线段树
- CentOS 6.5 搭建cuda环境
- ECG心电图数据1
- iOS 扩展类方法之category!
- mongodb节点配置指南
- 获取token
- ItermCF的MR并行实现