我在Windows窗体应用程序中有两个窗体。我们称之为“第一形式”和“第二形式”。 我希望通过clik on第二个窗体上的按钮,更改第一个窗体的其中一个控件的属性。我为此定义了一个事件。我的意思是当我点击第二个表单的按钮时,会调用第一个表单中的方法。这是方法:
// changes the visibility of the specified control
public void change_visibility()
{
this.new_customer_label.Visible = true;
}
但是当我在这个方法上设置一个断点并在执行后检查它。该物业没有改变。怎么了?提前谢谢
note :在第二个表单按钮的点击事件中,我也关闭了表单。
答案 0 :(得分:0)
以下是您可以执行的操作示例:
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;
}
}
答案 1 :(得分:0)
“注意:在第二个表单按钮的点击事件中,我也关闭了表单。”
然后用ShowDialog()而不是Show()显示第二个表单可能是更好的设计。类似的东西:
Form2 f2 = new Form2();
f2.ShowDialog(); // code STOPS here until "f2" is closed
this.new_customer_label.Visible = true;
答案 2 :(得分:0)
默认情况下,设计人员会在' Form1.Designer.cs'中生成代码。类。在那里,您可以看到所有控件都设置为私有,将它们更改为公共,然后再试一次......
答案 3 :(得分:0)
由于您将在互联网上搜索此问题,您将找到不同的解决方案,但我认为最佳解决方案是将控件公开,然后您可以从任何形式访问这些控件。 请遵循这些说明。
Form Form2 objForm=new Form2();
objForm.new_customer_label.Visible=true;
我希望这会对你有所帮助!!!
答案 4 :(得分:0)
因此,首先打开Form1.designer.cs
并将控件更改为public
Form1
,这将打开表格2。
Form2 frm2 = new Form2();
frm2.Owner = this;
frm2.Show();
Form2
,这将更改表格1中控件的属性
(this.Owner as Form1).label1.Visible = true;