首页 > 解决方案 > 如何以另一种形式使用标签中的 user_id

问题描述

我正在尝试创建一个函数 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 存储在标签中,但我不确定如何。

标签: c#sqlfunctionlabeluserid

解决方案


我将创建一个带有公共字段的公共类来存储 UserID。

例如。假设您在 int 变量中有 UserID,正如您所描述的那样。现在假设您创建了一个名为Commondefined 的公共静态类,其中包含一个名为 的 int 类型的公共静态字段ID

您现在可以将 UserID 存储在类的静态字段中:

Common.ID = UserID

稍后,当您想从其他表单访问 UserID 时,只需执行以下操作:

string UserID = Common.ID

轻松愉快。

当然,您不需要在单独的类中执行此操作......您的表单本身就是一个类,您可以在那里创建您的公共字段,并将其称为

Form1.UserID

或者无论原始表单的名称是您捕获 UserID 的位置...


推荐阅读