从另一种形式更改标签

本文关键字:标签 另一种 | 更新日期: 2023-09-27 18:16:32

我已经为这个答案搜索了其他问题(这就是我如何得到我所做的),除了最终结果之外,一切似乎都在工作。我没有得到错误,但我没有得到所需的输入,不知道为什么。

我有两个表单,Form1和login。在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上点击login,它打开了登录表单。我输入我的用户名和密码,然后它将输入传递给我的form1变量。由于form1上的label2不是公共的,所以我在登录表单上使用了一个公共方法来改变我的label2。短信,但没有,我不知道为什么。

从另一种形式更改标签

从你的描述来看,我相信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())

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

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

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

frm.Show();

我想它会起作用的。:)