如何通过读取文件来创建多级MenuStrip?

时间:2020-07-07 08:04:25

标签: c# menustrip

文本文件:

1;Laptop
2;Dell;1
3;Asus;1
4;Dell Vostro;2
5;RAM
6;RAM Kington;5
7;RAM Kingmax;5
8;RAM Kington 3GB;6
9;RAM Kingmax 2GB;7

ToolStripMenuItem

这是我的代码:

//Class item
class Item
{
    public string Id { get; set; }
    public string Name { get; set; }
    public string Parent { get; set; }
}

//Read file from file1.txt
static List<Item> GetItems()
{
    string[] lines = File.ReadAllLines("Item.txt");
    List<Item> list = new List<Item>();
    foreach (string line in lines)
    {
        string[] strItem = line.Split(';');
        Item item = new Item
        {
            Name = strItem[1],
            Id = strItem[0],
            Parent = strItem.Length > 2 ? strItem[2] : null
        };
        list.Add(item);
    }
    return list;
}

//Process input from file1.txt
private void Form1_Load(object sender, EventArgs e)
{
    List<Item> list = GetItems();

    foreach (Item item in list)
    {
        if (item.Parent is null)
        {
            ToolStripMenuItem menuItem = new ToolStripMenuItem(item.Name);
            msItem.Items.Add(menuItem);
            foreach (Item item2 in list)
            {
                if (item2.Parent == item.Id)
                {
                    ToolStripMenuItem menuItem1 = new ToolStripMenuItem(item2.Name);
                    menuItem.DropDownItems.Add(menuItem1);
                    foreach (Item item3 in list)
                    {
                        if (item3.Parent == item2.Id)
                        {
                            ToolStripMenuItem menuItem2 = new ToolStripMenuItem(item3.Name);
                            menuItem1.DropDownItems.Add(menuItem2);
                        }

                    }
                }
            }
        }
    }
}

但是如果我想创建一个菜单,那么循环太多了,里面的10个级别将是10个嵌套循环。

那我如何优化代码?

1 个答案:

答案 0 :(得分:0)

只需使用Dictionary<string, ToolStripMenuitem>,您就可以在创建菜单时查找菜单:

/Controller
相关问题