我有一个包含Name,UserID,Password,UserType列的表。 我还有一个登录表单,用户键入用户ID /密码组合,选择userstype(学生或教师)并单击按钮确定。如果存在这样的id /密码组合,程序将打开一个新表单 - 学生或教师表单,具体取决于所选的用户类型。我想要做的是,当第二个表单打开表单上的标签时,表示:登录:“名称”。我知道如果我把代码放在form1
中if(rbtnStud.checked)
{
Students form = new Students (txtUID.Text);
formShowDialog;
this.Hide();
}
以第二种形式
public Students(string txtBox)
{
InitializeComponent();
lblName.Text = txtBox;
}
这将在标签中显示UserID。但是我希望显示表中的Name,而不是UserID。有可能吗?
谢谢。
好的,这是附加信息:我正在使用WinForms 用于从“LoginDB”类中的数据库中提取信息的代码:
SqlConnection conn = SchoolDB.Connected();
SqlCommand cmd = new SqlCommand("Select UserType from Login where UserID=@id and Password=@pwd", conn);
cmd.Parameters.AddWithValue("@id", UserID);
cmd.Parameters.AddWithValue("@pwd", Password);
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
DataTable dt = new DataTable();
dt.Load(dr);
conn.Close();
return dt;
并在主要表格上:
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
DataTable result = LoginDB.Login(txtUID.Text, txtpwd.Text);
if (result.Rows.Count == 1)
{
if (rbtnStud.Checked)
{
Students form = new Students(txtUID.Text);
form.ShowDialog();
this.Hide();
}
else if{}
答案 0 :(得分:0)
更改SqlCommand以返回Name而不是UserType:
SqlCommand cmd = new SqlCommand("Select Name from Login where UserID=@id and Password=@pwd", conn);
更新主窗体上的click事件:
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
DataTable result = LoginDB.Login(txtUID.Text, txtpwd.Text);
if (result.Rows.Count == 1)
{
if (rbtnStud.Checked)
{
// pass the name to the students form
Students form = new Students(dt.Rows[0]["Name"] as string);
form.ShowDialog();
this.Hide();
}
else if{}
....