前言
提示:这一节我们学习C#不同的窗体传值问题
例如:在登录窗体输入用户的账号和密码,在后台查询数据库之后,查询正确后,并返回用户的信息,并在用户信息窗体显示用户的信息等操作。
提示:以下是本篇文章正文内容,下面案例可供参考
一、逻辑思路
第一步 :用户登录,输入账号和密码
第二步:根据输入的账号和密码在数据库查询
第三步:创建一个类(Result),若查询成功,将用户的一些基本信息用类的属性保存,或只存用户主键,若查询不到则返回错误信息。
第四步:查询失败弹框提醒,成功则进入主界面,并进行窗体传值操作,根据传过来的用户主键查询返回用户信息,并将用户的基本信息显实出来。
二、使用步骤
1.第一步
sql表, 主键为tel
登录窗体
登录按钮绑定事件代码如下(示例):
//创建对象
yyl_mysql sql = new yyl_mysql();
Result result = new Result();
private void button1_Click(object sender, EventArgs e)
{
//接收 LoginUser方法返回的用户信息,返回类型Result
result = sql.LoginUser(textBox_tel.Text, textBox_password.Text);
//判断是否查找
if(result.F) //true: 查找成功
{
//使用构造方法传值,在构造方法中传如对象result就实现了传值,
//需在对应的窗体接收值,不然会报错
UserMessage main = new UserMessage(result);
//窗体调用
main.ShowDialog();
}
else
{
//弹框显示错误信息
MessageBox.Show(result.Error);
}
}
2.第二步
sql方法
提示:返回的类型是Result
代码如下(示例):
//登录用户
public Result LoginUser(string tel, string password)//接收账号和密码
{
Result result = new Result();
MySqlConnection con = new MySqlConnection(str);
MySqlCommand cmd = new MySqlCommand();
try
{
con.Open();
cmd.Connection = con;
cmd.CommandText = "select * from tb_user where tel=@tel and password=@password "; //表的字段名=@新参数名
cmd.Parameters.Add(new MySqlParameter("tel", tel));
cmd.Parameters.Add(new MySqlParameter("password", password));
MySqlDataReader reader = cmd.ExecuteReader();
if (reader.Read())
{
result.F = true;
//这里的Result类成员变量存储,在登录界面的时候可以传值到新的界面
result.Tel = reader["tel"].ToString();
result.Error = "成功查找到用户";
}
else
{
result.F = false;
result.Tel = "";
result.Error = "查找失败!没有此用户......";
}
}
catch (Exception ex)
{
result.F = false;
result.Tel = "";
result.Error = ex.Message;
}
finally
{
con.Close();
}
return result;
}
3.第三步
1: 创建Result保存用户的主键及其他信息,我这里选择只保存主键(tel)
2: 更改类的作用范围为public
4.第四步
窗体接收值
代码如下(示例):
//原来的窗体的无参构造方法
public UserMessage()
{
InitializeComponent();
}
//创建全局变量对象
Result re = new Result();
User user = new User();
yyl_mysql sql = new yyl_mysql();
//有参构造方法
public UserMessage(Result result)
{
InitializeComponent();
//接收传过来的值
re = result;
//根据传过来的主键值返回用户的信息
user = sql.ReadUser(re.Tel); //关于ReadUser()方法在前面的博客有说,不会可以翻阅一下
//窗体组件赋值
textBox_tel.Text = user.Tel;
textBox_name.Text = user.Name;
textBox_sex.Text = user.Sex;
textBox_password.Text = user.Password;
}
三、运行结果