两个链接如何在同一个项目中连接2个表单?

时间:2017-06-12 16:22:29

标签: c# .net winforms

我创建了两个表单,我希望每个表单都能够相互访问。 这是我目前的代码:

public partial class Form1: Form
{
    public Form1()
    {
        InitializeComponent();
        form2 = new Form2(this);
    }
}

internal partial class Form2: Form
{
    Form1 form1;
    internal Form2(Form1 f1)
    {
        InitializeComponent();
        form1 = f1;
    }
}

(form1中的所有控件,方法都是公共的,form2中的方法是内部的,如果有帮助的话)

问题是我可以从from2访问form1中的所有控件,但是当form1需要访问form2时我也不能这样做。在form1中,我可以使用内置方法访问form2,例如.Show() .Focus().Hide(),但不能访问复选框和跟踪栏等元素。

在声明表单时我做错了什么,或者这是由于其他原因造成的错误?如果这是一个错误,你可以告诉我为什么存在这个错误的原因;我很困惑,因为我非常确定InitializeComponent()中的内容是非常正确的(以标准方式使用VS设计器)。

1 个答案:

答案 0 :(得分:0)

您不应直接从其他类访问内部实现细节(例如控件)。

相反,您应该编写执行所需任务的公共函数或属性,并从另一个表单中调用它们 这将允许您重构一个表单而不影响另一个表单。