我有6种形式(我们只说F1,F2,F2a,F2b,F2c,F2d)
我试图将 F2a - F2d 作为 F2 的孩子,而 F2 parentform是 F1 和 F1 子表单 F2
我尝试了什么
F1
private void button1_Click(object sender, EventArgs e)
{
F2 nX = new F2(this);
this.Visible = false;
nX.Visible = true;
}
F2
public F2(F1 parentForm)
{
InitializeComponent();
this.oF = parentForm;
F2a nA = new F2a(this); //It give me error as i will describe down there.
}
public F1 oF;
F2a - F2d
public F2* (F2 parentForm) //Well lets just say * stand for the letter of each Form
{
InitializeComponent();
this.oF = parentForm;
}
public F2 oF;
在 F2 上,它给了我2个错误
1.最佳重载方法匹配' GUI_X.F2a.F2a(System.Windows.Forms.F2)'有一些无效的论点
2.Argument 1:无法转换为' GUI_X.F2'到' System.Windows.Forms.MainMenu'
为什么 F2 不能用于 F2a - F2d ,而工作 F1 到 F2 ? 我错了什么?我怎么解决这个问题?
我是C#的新手,如果有人能帮助我并尽可能简单地解释,我将不胜感激。
如果这有助于我使用 Windows窗体项目。
提前谢谢。
修改
对不起,我忘了在F2 *中初始化 oF ,感谢@S_I_R回答。 但它仍然无法解决问题
答案 0 :(得分:2)
请您在F2 *类
中验证this.oF的类型为F2public F2* (F2 parentForm)
{
InitializeComponent();
this.oF = parentForm;
}
private F2 oF; //Make sure this is F2 not F1 or other
修改强>
只需在F2类中声明F2a-F2d私有对象,然后在需要时显示它们
public class F2
{
private F2a f2a;
private F2b f2b;
public F1 oF;
public F2(F1 parent)
{
InitializeComponent();
this.oF = parent;
f2a = new F2a(this);
f2b = new F2b(this);
}
// Now you call F2a - F2d from any method
public void ShowF2a()
{
f2a.ShowDialog();
}
答案 1 :(得分:0)
您现有的代码应该看起来像gthis:
private void button1_Click(object sender, EventArgs e)
{
F2 nX = new F2(this);
nX.Show();
}
..但是再做一次改变,你就会得到你想要的东西:
private void button1_Click(object sender, EventArgs e)
{
F2 nX = new F2(this);
nX.ShowDialog();
}
您需要在表单实例上调用Show才能显示它。但是,如果你打电话给ShowModal,在关闭孩子之前,它不会让你回到'父母'。
答案 2 :(得分:0)
您已将表单F2
的一部分放入System.Windows.Forms
命名空间。不要这样做。将表单的所有部分放在您自己的命名空间(GUI_X
)中。检查包含partial class F2
的所有文件,并确保命名空间正确。