我想通过循环并使用反射来获取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());
但是我得到了"对象不匹配目标类型"错误,我很困惑,不知道要指定什么对象作为获取值的源对象。
请引导我通过…
这不是反射的情况。
要获得菜单项,您应该首先获得对ToolStrip的引用,并从那里迭代其Controls
集合。
代码看起来像这样:
foreach(Control ctrl in _myToolStrip.Controls)
{
MessageBox.Show(ctrl.Tag);
}
使用GetProperty("Tag").GetGetMethod().Invoke (item, null).ToString()
。