解决方案 »

  1.   

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;namespace WindowsFormsApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }        private void Form1_Load(object sender, EventArgs e)
            {
                foreach (ToolStripItem item in menuStrip1.Items)
                {
                    EnumChildMenu(item);
                }
            }        private void EnumChildMenu(ToolStripItem tsi)
            {
                OnFind(tsi);
                if (tsi is ToolStripMenuItem)
                {
                    ToolStripMenuItem tsmi = tsi as ToolStripMenuItem;
                    foreach (ToolStripItem item in tsmi.DropDownItems)
                    {
                        EnumChildMenu(item);
                    }
                }
            }        private void OnFind(ToolStripItem tsi)
            {
                textBox1.Text += tsi.Text + "\r\n";
            }
        }
    }新建一个窗体,添加一个MenuStrip,点右键,插入标准项。
    然后放置一个文本框,设置Multilines = true。
    稍微设置的大一些。
    在Form_Load中添加如上代码,以及另外两个方法。运行结果:&File
    &New
    &Open&Save
    Save &As&Print
    Print Pre&viewE&xit
    &Edit
    &Undo
    &RedoCu&t
    &Copy
    &PasteSelect &All
    &Tools
    &Customize
    &Options
    &Help
    &Contents
    &Index
    &Search&About...
      

  2.   

    果断不行啊   我插入的不是标准项   都是自己手动添加的项  根本就没有Items属性  后面的递归就根本执行不到了
      

  3.   

    但是为什么没有Items属性呢   用menuItems属性的话   foreach就不能用   访问不到Items属性  是不是有什么东西需要设置一下
      

  4.   

    我尝试着用for循环  index的方式遍历MenuItems  依然遍历不到Name属性   我只是想在窗体加载的时候给它赋Tag值   然后可以利用Tag值反射调用对应的窗体   有没有什么好的方法?  button按钮的动态调用窗体  我已经做好了    就是menu这个做不出来
      

  5.   

    代码不能用   没有items属性  遍历不出来