如何从另一个窗体更改控件属性
本文关键字:控件 属性 窗体 另一个 | 更新日期: 2023-09-27 18:11:37
在windows窗体应用程序中有两个窗体。我们称它们为"第一种形式"answers"第二种形式"。我想通过点击第二个表单上的按钮,改变第一个表单的一个控件的属性。我为此定义了一个事件。我的意思是,当我单击第二个表单的按钮时,将调用第一个表单中的一个方法。方法如下:
// changes the visibility of the specified control
public void change_visibility()
{
this.new_customer_label.Visible = true;
}
,但是当我在该方法上设置断点并在执行后检查值时。属性没有改变。怎么了?提前感谢
注意:在第二个表单按钮的click事件中,我也关闭了表单。
首先,打开Form1.designer.cs
并将控件更改为public
Form1
这将打开表格2。
Form2 frm2 = new Form2();
frm2.Owner = this;
frm2.Show();
Form2
这将改变表单1中控件的属性
(this.Owner as Form1).label1.Visible = true;
你可以这样做:
class Form1 : Form {
private Label labelInForm1;
public string LabelText {
get { return labelInForm1.Text; }
set { labelInForm1.Text = value; }
}
}
class Form2 : Form {
Form1 form1; // Set by the property
private Form1 Form1 {
get { return form1; }
set { form1 = value; }
}
private ChangeVisibility()
{
Form1.labelInForm1.Visible = true;
}
}
"注意:在第二个表单按钮的单击事件中,我也关闭了表单。"
那么用ShowDialog()而不是Show()来显示第二个表单可能是更好的设计。比如:
Form2 f2 = new Form2();
f2.ShowDialog(); // code STOPS here until "f2" is closed
this.new_customer_label.Visible = true;
默认情况下,设计器在'Form1.Designer.cs'类中生成代码。在这里,你可以看到所有的控件都设置为私有,将它们更改为公共,然后再试一次。
当你在互联网上搜索这个问题时,你会发现不同的解决方案,但我认为最好的解决方案是使控件公开,然后你可以从任何形式访问这些控件。
- 打开想要访问其控制属性的表单 开放Form.Designer.cs
- 将愿望控制类更改为public
- 转到要访问或更改属性的主表单 写下面的代码
- 现在访问这里的控件属性
objForm.new_customer_label.Visible=true;
Form Form2 objForm=new Form2();
希望这对你有帮助!!