我在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!");
}
答案 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!");
}