如何以另一种形式使用标签中的 user_id
Posted
技术标签:
【中文标题】如何以另一种形式使用标签中的 user_id【英文标题】:How to use user_id from a label in another form 【发布时间】:2019-03-17 15:36:21 【问题描述】:我正在尝试创建一个函数 GetUserID(),它返回用户 ID,我已将其插入到标签中,以便我可以在其他形式中使用它。
但是当我尝试将标签转换为 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 存储在标签中,但我不确定如何。
【问题讨论】:
【参考方案1】:我会创建一个带有公共字段的公共类来存储用户 ID。
例如。假设您在 int 变量中有 UserID,正如您所描述的那样。现在假设您创建了一个名为 Common
的公共静态类,并定义了一个名为 ID
的 int 类型的公共静态字段。
您现在可以将 UserID 存储在类的静态字段中:
Common.ID = UserID
稍后,当您想从其他表单访问 UserID 时,只需执行以下操作:
string UserID = Common.ID
轻松愉快。
当然,您不需要在单独的类中执行此操作...您的表单本身就是一个类,您可以在那里创建您的公共字段,并将其称为 p>
Form1.UserID
或者无论原始表单的名称是您捕获用户 ID 的位置...
【讨论】:
如何获取用户 ID?目前我在使用用户名和密码作为参数调用函数后从数据表中获取它,但我不想执行该代码两次。而且我不知道如何在一个函数中返回两种类型的数据 这是假设您已经预先检索了 UserID,正如您已经在做的那样。我的建议是将其存储在类属性(字段)中,而不是将其存储在表单上的标签中。我不确定我是否理解为什么需要从函数返回两个值。但是,如果您发现需要这样做,有两个不错的选择: 1. 使用一个类来存储这两个属性并在需要时访问它们。 2. 如果需要多个返回值,可以使用 Out 参数作为函数的参数。我更喜欢#1。以上是关于如何以另一种形式使用标签中的 user_id的主要内容,如果未能解决你的问题,请参考以下文章