C#从子表单调用MDI子项
我有这些形式:
MainScreen - MDI容器
DataBaseOutput - child
NewAnime - 孩子
DataBaseOutput有一个tab控件,用于保存datagrids,每个datagrids用于不同的表。我使用访问数据库。
在这些标签中,有一个menustrip,其中将调用“新”,“编辑”,“删除”等功能。现在,当我在第一个选项卡的menustrip上并单击“新建”时,我想在MDI容器内打开“NewAnime”表单。然而,这不符合我的计划。起初我试图从子窗体(DataBaseOutput)中调用它。这导致打开一个新的表单而不是一个孩子。当我把它变成一个孩子时它没有露面。
然后我转了很多东西,但我还是没弄明白。
这是调用表单的当前代码。它使用主窗体中的方法调用表单:
private void NewAnime_Click(object sender, EventArgs e)
{
MainScreen main = new MainScreen();
main.mShowForm(2);
this.Close();
}
主要形式的方法:
// Forms for MDI Parent
DataBaseOutput OutputForm = new DataBaseOutput();
NewAnime AddAnime = new NewAnime();
// How i made them childs (this is at the InitializeComponent(); part)
OutputForm.MdiParent = this;
AddAnime.MdiParent = this;
public void mShowForm(int formnumber)
{
switch (formnumber)
{
case 1: OutputForm.Show(); break;
case 2: AddAnime.Show(); break;
}
}
有没有人知道我做错了什么,也许有更好的主意?这可能有点太麻烦,但正如我所说,这是我第一次使用MDI表单而我只是想让它运行起来。
没有找到相关结果
已邀请:
1 个回复
厦惫
设为
?为此,请将其IsMdiContainer属性设置为true;还要检查它是否具有
和
顶级菜单项以及
和
菜单项。 (教程建议这一点,我知道它至少应该有一个
菜单项)。 有关更多指导,请查看本教程:创建MDI子窗体(MSDN) 编辑:更仔细地看,它似乎是你正在创建一个新的MainForm实例,并试图将该表单显示为该实例的子项,而不是在现有的MainForm中显示它。我假设你已经有一个MainForm实例打开了吗?假设OutputForm和AddAnime表单是MainForm的子表单,您可以像这样调用现有实例的方法:
但理想情况下,您应该在MainForm侦听的DataBaseOutput上有一个事件,并在引发事件时显示新的Form。有关详细信息,请参阅此处(它讨论用户控件而非子表单,但原理相同): 从用户控件调用父表单函数