根据你提供的代码,报错可能是因为以下原因:
1. 你在使用 "MaterialStandard_Name" 键时,没有检查该键是否已经存在于 SelectedMaterialAllInfo 字典中。如果该键已经存在,那么添加操作将会失败并抛出异常。
2. materialInfo_Grid_Add 变量的类型不是 Dictionary,而是其他类型,例如 List>。这种情况下,你需要先创建一个新的字典对象,将选定项的属性添加到其中,然后将该字典对象添加到 materialInfo_Grid_Add 列表中。
请尝试修改代码如下:
```
CommonControls.ucSearchTextbox searchTxb = sender as CommonControls.ucSearchTextbox;
DataRow drSelect = searchTxb.SelectedItemObj as DataRow;
if (drSelect == null)
return;
string materialName = drSelect["名称"].ToString();
if (materialInfo_Grid_Add.Any(d => d.ContainsKey("MaterialStandard_Name") && d["MaterialStandard_Name"] == materialName))
{
// 如果已经存在相同的材料名称,则不进行添加操作
return;
}
Dictionary materialInfo = new Dictionary();
materialInfo["MaterialStandard_Name"] = materialName;
materialInfo_Grid_Add.Add(materialInfo);
```
在这个例子中,我们首先检查 materialInfo_Grid_Add 列表中是否已经存在相同的材料名称。如果已经存在,则不进行添加操作。否则,我们创建一个新的字典对象,将选定项的名称添加到其中,并将该字典对象添加到 materialInfo_Grid_Add 列表中。