我正在尝试创建一个函数GetUserID(),该函数返回已插入标签中的userID,以便可以其他形式使用它。
但是当我尝试将标签转换为int32时,标签似乎始终为空。我认为这是因为函数在我的代码中的位置。
请参阅:
private void Loginbtn_Click(object sender, EventArgs e)
{
var LoginFunction = new LoginFunction();
var DataTable = new DataTable();
DataTable = LoginFunction.Login(Usernametxt.Text.Trim(), Passwordtxt.Text.Trim());
int UserID = Convert.ToInt32(DataTable.Rows[0]["USER_ID"]);
if (DataTable.Rows.Count == 1)
{
CalculatorMain calculatorMain = new CalculatorMain();
MainMenu mainMenu = new MainMenu();
UserIDlbl.Text = Convert.ToString(UserID);
MessageBox.Show("ID = " + UserID);
this.Hide();
mainMenu.Show();
}
else
{
MessageBox.Show("You entered the wrong username or password");
}
}
public int GetUserID()
{
int UserID;
if (Int32.TryParse(UserIDlbl.Text, out UserID))
{
UserID = Convert.ToInt32(UserIDlbl.Text);
}
else
{
MessageBox.Show("Error, Label for UserID could not be parsed");
}
return UserID;
}
我不确定我还可以将该功能放在哪里使用。
这里是调用函数的代码,该函数以单独的形式使用。
private void WorkoutHistoryForm_Load(object sender, EventArgs e)
{
Login login = new Login();
int UserId = login.GetUserID();
this.sETSTableAdapter.Fill(this.gymDataSet.SETS, UserId);
}
我一直认为必须有一种更好的方法来代替将UserID存储在标签中,但我不确定如何做。
答案 0 :(得分:0)
我将创建一个带有公共字段的公共类来存储UserID。
例如。假设您已经描述了int变量中的UserID。现在,假设您已经创建了一个名为Common
的公共静态类,该类定义了一个类型为ID
的int类型的公共静态字段。
您现在可以将UserID存储在类的静态字段中:
Common.ID = UserID
稍后,当您想通过其他形式访问UserID时,只需执行以下操作:
string UserID = Common.ID
简单的豌豆。
当然,您不需要在单独的类中执行此操作...您的表单本身是一个类,您可以在此处创建您的公共字段,并像那样调用它>
Form1.UserID
或者您捕获用户ID的原始表单的名称是什么...