0

J'essaie de remplir une colonne de liste déroulante datagridview avec des comboboxcells dans des winforms où chaque ligne a une collection différente dérivée de la liste imbriquée dans le dictionnaire, le dictionnaire fonctionne correctement quand je l'itère et obtient son objets et leurs valeurs de chaîne, cependant chaque combinaison différente que j'ai épuisée pour remplir les cellules de liste déroulante sur la forme de chargement a échoué. C'est possible? J'ai trouvé d'autres messages où ils utilisent des événements cellclick, etc. Je préfère remplir l'initialisation de formulaire.DataGridComboBoxColumn Valeurs différentes pour chaque ligne

//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

Note: il des erreurs sur la ligne où le comboboxcell est créé – user7773578

Répondre

0

L'indice est base zéro, il doit donc être strictement inférieur à son compte

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

Thanx, mais après avoir enlevé les = signer, cela ne fait aucune différence avec le résultat de l'erreur. J'ai même essayé de mettre l'index de ligne maximum à deux et rien ne se passe. DataGridViewComboBoxCell comboCell = dataGridView_objectAndType [6, ligne] en tant que DataGridViewComboBoxCell; Cette ligne est ce qui cause le problème si bien que je pensais que cela pourrait avoir quelque chose à voir avec l'index aussi. Je peux enlever la ligne de code et créer des colonnes de combobox vides assez facilement – user7773578

+0

"* cependant après avoir enlevé le signe = cela ne fait aucune différence avec le résultat d'erreur. *" Vous ne comprenez simplement pas la base de la programmation C#. Essayez d'apprendre les concepts élémentaires et lisez attentivement les suggestions que vous recevez avant d'écrire d'autres non-sens ici –

+0

Cependant, il n'est toujours pas pertinent pour le problème. J'ai essayé votre solution et cela ne fonctionne pas, je suis désolé. – user7773578