我设计中的文字标签文字不会改变

时间:2016-02-05 07:01:15

标签: c# winforms

我在Form1内部有一个名为txtOn的文字标签。我已将其修饰符设为public。现在,我尝试使用以下代码更改文本,只需单击按钮即可。没有任何反应,但点击了按钮!被记录到调试。

如何让文字标签的文字成功更改?

  private void button1_Click(object sender, EventArgs e)
    {
        Form1 home = new Form1();
        home.txtOn.Text = "test!";

        System.Diagnostics.Debug.WriteLine("button clicked!");
    }

7 个答案:

答案 0 :(得分:1)

你可能想要

// Start NEW Form1, show it and change the button
private void button1_Click(object sender, EventArgs e)
{
    Form1 home = new Form1();

    home.txtOn.Text = "test!";
    home.Show(); // <- do not forget to show the form

    System.Diagnostics.Debug.WriteLine("button clicked!");
}

// On the EXISTING Form1 instance change the button
// providing that "button1_Click" method belongs to "Form1" class
private void button1_Click(object sender, EventArgs e)
{
    txtOn.Text = "test!";

    System.Diagnostics.Debug.WriteLine("button clicked!");
}

答案 1 :(得分:1)

无法正常工作,因为您在Form1已经可用时重新实例化它。您正在更改与ui

上的按钮不在同一实例上的按钮文本

尝试

private void button1_Click(object sender, EventArgs e) 
{ 

        txtOn.Text = "test!";

}

答案 2 :(得分:0)

不,更改标签文本加载或初始化方法,如

private void button1_Click(object sender, EventArgs e)
    {
        Form1 home = new Form1();
        home.Show();     
        System.Diagnostics.Debug.WriteLine("button clicked!");
    }

Public Form1()
{
  txtOn.Text = "test!";
}

假设您尝试完全打开另一种形式。如果它是相同的表单,那么您根本不需要创建单独的表单实例。你可以说txtOn.Text = "test!";

答案 3 :(得分:0)

您必须只创建一次Form1。 样品

`Form1 home = new Form1();
home.button1.Click += new System.EventHandler(this.button1_Click);

private void button1_Click(object sender, EventArgs e)
    {

        home.txtOn.Text = "test!";

        System.Diagnostics.Debug.WriteLine("button clicked!");
    }`

答案 4 :(得分:0)

这是因为你还没有加载form1的新实例。

Form1 home = new Form1();
home.show();
home.txton.text="test!";

如果要在表单的当前实例上更改它,则需要使用this关键字:

this.txton.text="test!";

答案 5 :(得分:0)

您需要公开您的标签或其财产。

表格2

public string LabelText
    {
        get
        {
            return this.txtOn.Text;
        }
        set
        {
            this.txtOn.Text = value;
        }
    }

然后你可以这样做:

form2 frm2 = new form2();
frm2.LabelText = "test";

答案 6 :(得分:0)

您再次创建另一个相同形式的对象。所以标签没有改变。试试下面的代码。

private void button1_Click(object sender, EventArgs e)
    {
        txtOn.Text = "test!";

        System.Diagnostics.Debug.WriteLine("button clicked!");
    }