从另一种形式更改标签

时间:2013-05-31 20:37:46

标签: c#

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

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

Form1代码:

    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,但它没有,我不知道为什么。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分: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())

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您的代码适用于我,只需再写一行以显示form1。

frm.Show();

我认为它会起作用。 :)