我创建了两个表单,我希望每个表单都能够相互访问。 这是我目前的代码:
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设计器)。
答案 0 :(得分:0)
您不应直接从其他类访问内部实现细节(例如控件)。
相反,您应该编写执行所需任务的公共函数或属性,并从另一个表单中调用它们 这将允许您重构一个表单而不影响另一个表单。