MDI中的多个孩子

时间:2014-07-21 13:27:59

标签: c# .net winforms children mdi

我在MDI中有多种形式。我创造了几次相同的孩子,例如3次。我有一个我想要发送给所选孩子的数据,但它总是将数据发送给最新的孩子。

有示例代码:

f13 = new Excel_form(this, Convert.ToInt16(words[1].Substring(0, words[1].Length - 1)));
f13.MdiParent = this;
f13.FormClosed += new FormClosedEventHandler(f13_FormClosed);
f13.Show();

发送数据的功能:

f13.Odebrane(odebrane, ktory_form_pyta);

我想将数据发送到我自己选择的表单中。像这样:

Form[] children = this.MdiChildren;
children[CHOSEN_CHILD].WindowState = FormWindowState.Normal;

适用于WindowState,但不适用于发送数据。 有可能吗?

2 个答案:

答案 0 :(得分:1)

它应该被转换为Form的类。

MdiChildren是“Form”的集合,它没有您尝试使用的方法。

(children[CHOSEN_CHILD] as Excel_form).Odebrane(odebrane, ktory_form_pyta);

这样的东西

答案 1 :(得分:0)

您可以获取所有表单,迭代它们,然后通过Tag找到特定表单。

这是您创建新孩子的方式:

f13 = new Excel_form(this, Convert.ToInt16(words[1].Substring(0, words[1].Length - 1)));
f13.MdiParent = this;
f13.Tag = 1; // int, string... whatever you want, Tag is object type.
f13.FormClosed += new FormClosedEventHandler(f13_FormClosed);
f13.Show();

迭代并找到具体的一个:

Form[] children = this.MdiChildren;
foreach (Form child in children)
{
     if(Convert.ToInt32(child.Tag) == 1) // Do something
     else // Do something else
}