如何从另一个窗体更改控件属性

本文关键字:控件 属性 窗体 另一个 | 更新日期: 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'类中生成代码。在这里,你可以看到所有的控件都设置为私有,将它们更改为公共,然后再试一次。

当你在互联网上搜索这个问题时,你会发现不同的解决方案,但我认为最好的解决方案是使控件公开,然后你可以从任何形式访问这些控件。

  1. 打开想要访问其控制属性的表单
  2. 开放Form.Designer.cs
  3. 将愿望控制类更改为public
  4. 转到要访问或更改属性的主表单
  5. 写下面的代码Form Form2 objForm=new Form2();
  6. 现在访问这里的控件属性objForm.new_customer_label.Visible=true;

希望这对你有帮助!!