获取ToolStripMenuItem的关联MDI形式

时间:2019-04-01 18:39:01

标签: c# mdi toolstripmenu

我有一个ToolStripMenuItem,其中包含在我的应用程序中打开的所有MdiChildren的列表(ToolStripDropDownItem的列表)。此列表是通过使用MenuStrip.MdiWindowListItem属性自动生成的(实际上,我在设计器中将其设置了,但结果是相同的。)

我想在每个下拉项目旁边显示Mdi表单图标。因此,我在调试应用程序时检查了下拉菜单项的属性,然后看到了这个(名为MdiForm的属性): Property Screen Shot

所以我试图写类似的东西来访问它(使用反射):

foreach (ToolStripDropDownItem item in (sender as ToolStripMenuItem).DropDownItems)
{
    var type = item.GetType();
    var field = type.GetProperty("MdiForm");//Return null always
    ...
}

但是,这不会返回MdiForm属性。变量“字段”始终为空。 深入研究,我意识到虽然“ item”具有MdiForm属性,但item.GetType()不会返回相同的属性!

查看ToolStripMenuItem.cs源代码here,我看到的是:

internal ToolStripMenuItem(Form mdiForm) {
    Initialize();
    Properties.SetObject(PropMdiForm,mdiForm);
}

这:

internal Form MdiForm {
get { 
         if (Properties.ContainsObject(PropMdiForm)) {
             return Properties.GetObject(PropMdiForm) as Form; 
         } 
             return null;
         }
     }

但是我不确定如何访问它。

0 个答案:

没有答案