0

我目前正在开发 C# Visual Studio Windows 应用程序。我在从一个表单(Form1)中获取文本框值并将其存储在一个变量中以供下一个表单(Form2)使用时遇到问题。我不想立即显示该值,因此我需要一种可以将值存储在后台并能够在以后使用它的方法。我该怎么做?

这种方法我试过了,但是没有用,谁能告诉我为什么?form2 中的返回值为空。

Login.cs(登录页面)

    public string uname;

    private void LoginButton_Click(object sender, EventArgs e)
    {
        string userName = this.LoginUsernameTextBox.Text;
        uname = userName;
    }

Form2.cs

    private void CheckLoginUsername_Click(object sender, EventArgs e)
    {
    Login login = new Login();
    MessageBox.Show("The value of uname is:" + login.uname);
    }

在此处输入图像描述

4

1 回答 1

2

问题是Form2没有引用Login用户正在与之交互的同一个实例,您正在创建一个新实例(从不向用户显示它)然后从中获取一个值。

您还没有展示这些表单之间的交互程度(如果有,那么您错过了很多)。

它应该看起来像这样:

在表格 2 中:

private void Form1_Load(object sender, EventArgs e)
{
    Login loginForm = new Login ();

    loginForm.ShowDialog();

    string username = loginForm.UserName;
}

那么登录表单应该是这样的:

public string UserName { get; private set; }

这将允许您在内部设置值(提交/关闭表单时)并在外部读取它。

公开字段被认为是不好的做法;最好改用属性(这样,除其他外,您可以执行我在此处所做的操作并将设置器限制为私有)。

于 2012-12-10T19:13:46.153 回答