我想通过循环遍历它们并使用反射来获取MDI表单值的每个ToolStripMenuItem:
FieldInfo[] menuitems = GetType().GetFields(BindingFlags.GetField |
BindingFlags.NonPublic | BindingFlags.Instance);
foreach (var item in menuitems )
if (item.FieldType.Equals(typeof(ToolStripMenuItem)))
MessageBox.Show(
item.FieldType.GetProperty("Tag").GetValue(item, null).ToString());
但我得到“对象与目标类型不匹配”错误,我很困惑,不知道要指定哪个对象作为获取值的源对象。
请指导我完成...... 提前谢谢你。
答案 0 :(得分:5)
这不是反思的理由。
要获取菜单项,您应首先获得对ToolStrip的引用,然后从那里迭代其Controls
集合。
代码看起来像这样:
foreach(Control ctrl in _myToolStrip.Controls)
{
MessageBox.Show(ctrl.Tag);
}
答案 1 :(得分:1)
使用类似GetProperty("Tag").GetGetMethod().Invoke (item, null).ToString()
的内容。