通过反射获取值



我想通过循环并使用反射来获取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()

相关内容

  • 没有找到相关文章