0

我想在winforms中填充一个datacombination组合框的组合框,其中每行都有一个不同的集合,从字典中的嵌套列表派生而来,当我遍历它并获取其字典对象和它们的字符串值,但是每个不同的组合我已用尽填充表单加载中的组合框单元失败。可能吗?我发现其他职位,他们使用cellclick事件等。我更喜欢填写表单初始化。DataGridComboBoxColumn值不同对于每一行

//this works 
public void create datatable() 
{ 
    DataGridViewComboBoxColumn Data_CmBx_Col_ObjectType = new DataGridViewComboBoxColumn(); 
    Data_CmBx_Col_FamilyType.Name = _ADD_OBJECT_TYPE; 
    Data_CmBx_Col_FamilyType.HeaderText = _ADD_OBJECT_TYPE; 
    dataGridView.Columns.Insert(6, Data_CmBx_Col_ObjectType); 


    //pop combobox, the dictionary works 
    int i = 0; 
    foreach (KeyValuePair<object, List<objectType>> objectAndType in combined_Dictionary) 
    { 
     i++; 
     if (rowIndex <= combined_Dictionary.Count) 
     {     
      CreateCustomComboBoxDataSouce(i, objectAndType.Value);     
     } 
    } 

    //Bind dataGridView to a datatable 
    dataGridView_Family.DataSource = data; 
}//end method 

//method is called and fails with index out of range error collection 
private void CreateCustomComboBoxDataSouce(int row, List<objectAndType> type) //row index ,and two parameters 
{ 
    DataGridViewComboBoxCell comboCell = dataGridView_objectAndType[6, row] as DataGridViewComboBoxCell; 
    comboCell.DataSource = new BindingSource(type, null); 
}//end method 
+0

注:错误在哪里的comboboxcell创建 – user7773578

回答

0

该指数从零开始,所以必须严格小于其计数

if (rowIndex < combined_Dictionary.Count) // not <= but without = 
+0

感谢名单线,但除去后=签名对错误结果没有任何影响。我甚至尝试将最大行索引设置为2,并没有任何反应。 DataGridViewComboBoxCell comboCell = dataGridView_objectAndType [6,row] as DataGridViewComboBoxCell;这条线是导致这个问题的原因,所以我认为它也可能与索引有关。我可以删除代码行,并且很容易创建空的组合框 – user7773578

+0

“*然而,在删除=符号之后,它对错误结果没有任何影响。*”您根本不了解C#编程的基本知识。尝试学习基本概念并仔细阅读您在收到其他废话之前所收到的建议 – 2017-04-02 08:00:11

+0

但是它仍然与问题无关。我已经尝试了您的解决方案,但无法正常工作,我很抱歉。 – user7773578

相关问题