0

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

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

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

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

4

5 回答 5

2

所以首先,打开Form1.designer.cs并将控件更改为public

Form1这将打开表格 2。

Form2 frm2 = new Form2();
frm2.Owner = this;
frm2.Show();

Form2这将改变 Form 1 中控件的属性

(this.Owner as Form1).label1.Visible = true;
于 2018-10-05T09:11:35.050 回答
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;
  }
}
于 2013-04-30T17:04:08.113 回答
0

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

那么使用 ShowDialog() 而不是 Show() 显示第二个表单可能是一个更好的设计。就像是:

Form2 f2 = new Form2();
f2.ShowDialog(); // code STOPS here until "f2" is closed
this.new_customer_label.Visible = true;
于 2013-04-30T17:22:08.893 回答
0

默认情况下,设计器在“Form1.Designer.cs”类中生成代码。在那里,您可以看到所有控件都设置为私有,将它们更改为公开,然后重试...

于 2017-04-03T15:47:51.707 回答
0

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

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

我希望这对你有帮助!!!

于 2017-08-07T06:31:39.467 回答