0

我在下面定义了变量:

Dictionary<clssMenu_Item, Dictionary<clssMenu_Item, List<clssMenu_Item>>> dicMenu =
        new Dictionary<clssMenu_Item, Dictionary<clssMenu_Item, List<clssMenu_Item>>>();

类型clssMenu_Item定义为:

class clssMenu_Item
{
    public string name;
    public string text;
}

我有一个字符串(我调用strKey)已经分配给inside的text属性。很明显是一部分。我想在整个字典中搜索以找到它的子目录。不知道怎么才能得到这个值?!clssMenu_ItemdicMenutextkeydicMenuvaluestrKey

此方法计算key字典的:

private  List<clssMenu_Item> GetFormButtons(Form form)
{
    List<clssMenu_Item> ListBtn = new List<clssMenu_Item>();
    foreach (Control c in GetAllControls<Button>(form))
    {
        int btnIndex= c.Name.IndexOf("btn");
        if (btnIndex != 0) // find all of the determined buttons
        {
            clssMenu_Item objBtn = new clssMenu_Item();
            objBtn.name = c.Name.ToString();
            objBtn.text = c.Text;

            ListBtn.Add(objBtn);
        }
    }
    return ListBtn;   
}

这是我填充密钥的方式:

foreach (var k in objH.mainForm) //fill dicMenu
{
    dicMenu.Add(k,null);
}

我使用嵌套字典的原因是这棵树只有 3 个级别。每个clssMenu_Items都有一群和自己一样的孩子typedictionary是我拯救他们的解决方案。

问题: 现在我想通过以下代码填充键的值:

Dictionary<clssMenu_Item, List<clssMenu_Item>> d2 = new Dictionary<clssMenu_Item, List<clssMenu_Item>>();
    clssMenu_Item k = new clssMenu_Item();
    k.text = strKey;
    foreach(var prp in dicMenu.Keys) //we should fill all of the variables in class
    {
        if (prp.text == strKey)
        { k.name = prp.name; break; }
    }
    d2= dicMenu[k]; //assign value of key

我不知道为什么我在 say is not in 上有错误d2= dicMenu[k];k尽管DicMenu我调试了这个块。我们有k:(DicMenu我不知道我该怎么办?!还有其他方法可以创建一棵树吗?

4

0 回答 0