c# - 如何将值从 winform 传递给用户控件?
问题描述
我有一个注册表单、一个登录表单和一个主表单。程序从注册表单开始。如果我注册数据(姓名,电子邮件,密码)加载到本地数据库。当我正确登录时显示主窗体。主窗体有一个带有标签的用户控件。我想用她/他的名字在标签上写一个欢迎文字。示例:“欢迎乔希!”。所以我应该识别用户,所以我使用登录表单中的 textboxEmail.Text 。我的解决方案不起作用。有我的代码:
namespace personalFinance
{
public partial class Login : Form
{
public Login()
{
InitializeComponent();
var MainForm = new MainForm();
MainForm.Show();
HomepageUC hp = new HomepageUC(textboxEmail.Text);
hp.Show();
}
}
}
namespace personalFinance
{
public partial class HomepageUC : UserControl
{
string login = "";
public HomepageUC(string email)
{
InitializeComponent();
login = email;
var conn = new SqlConnection(@"Server=(localdb)\MSSQLLocalDB;
AttachDbFileName=|DataDirectory|database.mdf;");
conn.Open();
var cmd = new SqlCommand($"SELECT email FROM registration_data
WHERE email = '{login}'", conn);
var reader = cmd.ExecuteReader();
while (reader.Read()) labelWelcome.Text = reader[0].ToString();
}
}
}
我得到了那个错误:没有给出与“HomepageUC.HomepageUC(string)”personalFinance C:\Users\nickname18\source\repos\personalFinance\personalFinance\MainForm.Designer.cs 所需的形式参数“email”相对应的参数
当我单击此错误检索到 MainForm.Designer.cs this.HompageUC1 = new personalFinance.Homepage1(); 它带有红色下划线。
解决方案
电子邮件字段是唯一的吗?你已经调试了吗?是否发生任何错误?也许查询带来了多条记录或没有记录,也许该字段也是空的。尝试这个:
namespace personalFinance
{
public partial class HomepageUC : UserControl
{
string login = "";
public HomepageUC(string email)
{
InitializeComponent();
login = email;
var conn = new SqlConnection(@"Server=(localdb)\MSSQLLocalDB;
AttachDbFileName=|DataDirectory|database.mdf;");
conn.Open();
var cmd = new SqlCommand($"SELECT email FROM registration_data
WHERE email = '{login}'", conn);
var reader = cmd.ExecuteReader();
while (reader.Read())
{
if(!string.IsNullOrEmpty(reader[0].ToString()))
{
labelWelcome.Text = reader[0].ToString();
break;
}
}
}
}
}
推荐阅读
- javascript - 猫鼬。如何更新包含在另一个数组中的数组元素?
- ios - 更改儿子地址后保留的json数据。iOS、斯威夫特
- tensorflow - Mask RCNN 内存管理
- pine-script - 如何在索引 540 错误处修复 TradingView 深度不足
- angular - Cytoscape 无法读取 null 的属性“className”
- cassandra - 如何检查 cassandra 何时从日志中关闭或启动/重新启动?
- c++ - std::ostream 无需定义标头即可识别
- elasticsearch - 建立一个基本的弹性搜索集群
- ios - 如何解决:嵌入式二进制文件未使用相同的证书进行签名
- c - 在C中打印数字中的前导零