【问题标题】:Changing Label From Another Form从另一个表单更改标签
【发布时间】:2013-05-31 20:37:45
【问题描述】:

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

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

【问题讨论】:

  • 您要实例化一个新的 form1 副本,为什么?
  • winforms 还是 webforms?

标签: c#


【解决方案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())

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

      frm.Show();
      

      我认为它会起作用。 :)

      【讨论】:

      • 这行得通,但我从来没有关闭过 Form1。因此,当我使用 frm.Show() 时,它会显示一个带有更新输入的新 Form1(现在我的代码可以工作),但我现在打开了两个 Form1。
      • 好的,所以您的意思是说同时打开了两个表单并且您正在单击一个表单,这应该会更改另一个表单上的标签文本。请让我知道我对您的问题的理解,是否正确??
      • 如果两个表单应该同时打开并且您需要在单击另一个表单时更新标签文本。只需在按钮单击事件之外创建 form1 对象,它应该是静态的,然后尝试使用。它对我来说很好。如果您仍然遇到问题,请告诉我。 :)
      • 这行得通,但是当我将方法 SetTextForLabel 设置为静态时,代码“this.label2.Text = myText;”不再有效。
      • 不要将该方法设置为静态。只需将表单实例设置为静态即可。就是这样。它对我来说很好。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-28
      • 1970-01-01
      • 2017-08-10
      相关资源
      最近更新 更多