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

时间:2013-04-30 16:52:19

标签: c# forms

我在Windows窗体应用程序中有两个窗体。我们称之为“第一形式”和“第二形式”。  我希望通过clik on第二个窗体上的按钮,更改第一个窗体的其中一个控件的属性。我为此定义了一个事件。我的意思是当我点击第二个表单的按钮时,会调用第一个表单中的方法。这是方法:

// changes the visibility of the specified control
   public void change_visibility() 
    {
        this.new_customer_label.Visible = true;
    }

但是当我在这个方法上设置一个断点并在执行后检查它。该物业没有改变。怎么了?提前谢谢

note :在第二个表单按钮的点击事件中,我也关闭了表单。

5 个答案:

答案 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)

由于您将在互联网上搜索此问题,您将找到不同的解决方案,但我认为最佳解决方案是将控件公开,然后您可以从任何形式访问这些控件。 请遵循这些说明。

  1. 打开您想要访问其控制属性的欲望表单
  2. 打开Form.Designer.cs
  3. 将欲望控制类更改为公开
  4. 转到您要访问或更改属性的主表单
  5. 编写此代码 Form Form2 objForm=new Form2();
  6. 现在访问您的控件属性 objForm.new_customer_label.Visible=true;
  7. 我希望这会对你有所帮助!!!

答案 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;