0

我已经为这个答案搜索了其他问题(这就是我所做的),除了最终结果之外,一切似乎都在工作。我没有收到任何错误,但我没有得到所需的输入,也无法弄清楚原因。

我有两个表单,Form1 和登录。在 Form1 上,我有一个名为“label2”的标签,它将显示在登录时按下按钮时从文本框中输入的文本。这是我到目前为止的代码:

表格 1 代码:

    public void SetTextForLabel(string myText)
    {
        this.label2.Text = myText;
    }

登录代码:

    private void button1_Click(object sender, EventArgs e)
    {
        Form1.userName = textBox1.Text;
        Form1.password = textBox2.Text;

        Form1 frm = new Form1();
        frm.SetTextForLabel(textBox1.Text);

        this.Close();
    }

该程序有效。我在 form1 上单击登录,它会打开登录表单。我输入我的用户名和密码,并将输入传递给我的 form1 变量。由于 form1 上的 label2 不是公开的,因此我在登录表单上使用了一个公开的方法,该方法将更改我的 label2.Text,但它没有,我不知道为什么。任何帮助,将不胜感激。

4

3 回答 3

1

从您的描述来看,我相信 Form1 会打开登录表单,而登录表单上button1可能是您的登录按钮。

如果这一切都正确,那么我认为您的逻辑错误。

您在 Form1 上打开登录表单的按钮应该执行以下操作

using(Login loginForm = new Login())
{
     if(DialogResult.OK == loginForm.ShowDialog())
     {
         SetTextForLabel(loginForm.TextAccessorProperty);
     }
     else
     {
          MessageBox.Show("Invalid login");
     }
}

然后登录表单按钮一个应该做的,

//Login logic
this.DialogResult = DialogResult.OK;
// (no need for form.close())
于 2013-05-31T21:08:11.560 回答
0

你的代码对我来说很好,只需再写一行来显示 form1。

IE

frm.Show();

我认为它会起作用。:)

于 2013-05-31T20:50:05.470 回答
0

这会创建一个新实例,Form1但未显示,我怀疑这不是您需要的参考。

    Form1 frm = new Form1();
    frm.SetTextForLabel(textBox1.Text);
于 2013-05-31T20:41:16.473 回答