以下是我的登录表单代码。等等,如果我以Jack身份登录,下一个表格将在label1中显示Jack。如果登录为david,那么下一个将在label1中显示david。就像在网络表单中使用会话一样。
按钮登录方法
private void btnLogin_Click(object sender, EventArgs e)
{
//retrieve connection information info from App.config
string strConnectionString =
ConfigurationManager.ConnectionStrings["sacpConnection"].ConnectionString;
//STEP 1: Create connection
SqlConnection myConnect = new SqlConnection(strConnectionString);
//STEP 2: Create command
string strCommandtext = "SELECT dUsername, dPassword from DOCTOR";
// Add a WHERE Clause to SQL statement
strCommandtext += " WHERE dUsername=@dname AND dPassword=@dpwd;";
SqlCommand cmd = new SqlCommand(strCommandtext, myConnect);
cmd.Parameters.AddWithValue("@dname", textUsername.Text);
cmd.Parameters.AddWithValue("@dpwd", txtPassword.Text);
try {
myConnect.Open(); // STEP 3: open connection
SqlDataReader reader = cmd.ExecuteReader(); // retrieve data
while (reader.Read()) //For Doctor
{
if (MessageBox.Show("Login Successful") == DialogResult.OK)
{
timer1.Enabled = true;
return;
}
}
//STEP 5: close connection
reader.Close();
MessageBox.Show("Invalid username or password");
}
catch (SqlException ex) { }
finally {
//STEP 5: close connection
myConnect.Close();
}
}
答案 0 :(得分:2)
如果仅将名称传递给下一个表单是您的目标,那么您可以为新表单创建构造函数,并在构造函数调用本身中传递该值。 然后可以在新表格中使用该值 作为一个例子
Form2 frm2 = new Form2("LoginName");
然后可以在Form2的custructor中使用它。
public Form2(string loginname)
{
_loginname=loginname;
}
然后可以在form_load中使用它作为
Label1.Text=_loginname;
否则,使用静态变量也是一种选择 如果您需要有关代码的帮助,请告诉我。
答案 1 :(得分:1)
您可以考虑添加公共类并将公共静态字符串声明为其成员,如下所示。
public class UserDisplayName
{
public static string displayName;
}
现在,您将在哪里展示“登录成功”'消息,您现在将用户名设置为
UserDisplayName.displayName = textUsername.Text;
要在表单上显示用户名,请使用
label1.Text = UserDisplayName.displayName;
因此,它现在将设置您的用户名。使用此功能的好处是,您现在可以在整个应用程序中的所有表单上使用此UserDisplayName.displayName
,这样您就不必重新声明和设置所有形式的变量。这背后的基本思想是c#中没有全局变量的概念。全局变量的用途由类的静态数据成员提供。
答案 2 :(得分:0)
将form2的标签设为public,并在form1上为该标签指定值 或者第二种方法你可以给出form2.name = username(你从数据库中检索)和form2获取名称..如 this.Name