Bonjour,

J'essaie d'utiliser les DataGridViewComboboxColumn avec un objet (sruct) en item.
Il n'y a pas de problème au remplissage, mais une erreur est généré lorsque j'y accède.
Ca fonctionne évidemment très bien avec un Combobox classique.

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
 
// La Structure ListItem
public struct ListItem
{
    public string LabelString;
    public string Constant;
    public ListItem(string labelString, string constant)
    {
        this.LabelString = labelString;
        this.Constant = constant;
    }
    public override string ToString()
    {
        return LabelString;
    }
}
 
private void Form1_Load(object sender, EventArgs e)
{
    DataGridViewComboBoxColumn cbc0 = new DataGridViewComboBoxColumn();
    cbc0.Name = "cboVar";
    cbc0.HeaderText = "Variable";
    cbc0.Width = 120;
    cbc0.Items.Add(new ListItem("Un", "1"));
    cbc0.Items.Add(new ListItem("Deux", "2"));
    cbc0.Items.Add(new ListItem("Trois", "3"));
 
    dataGridView1.Columns.Insert(0, cbc0);
    cbc0.Dispose();
 
    DataGridViewComboBoxColumn cbc1 = new DataGridViewComboBoxColumn();
    cbc1.Name = "cboOpe";
    cbc1.HeaderText = "Opérateur";
    cbc1.Width = 80;
    cbc1.Items.Add(new ListItem("égal", "="));
    cbc1.Items.Add(new ListItem("supérieur", ">"));
    cbc1.Items.Add(new ListItem("inférieur", "<"));
    dataGridView1.Columns.Insert(1, cbc1);
    cbc1.Dispose();
}
Rien de bien compliqué...
Et le message d'erreur quand on essaie de sélectionner une des lignes du 2ème combo alors que le choix du 1er a été fait :
"L'exception suivante s'est produite dans le DataGridView :
System.ArgumentException: La valeur DataGridViewComboBoxCell n'est pas valide.
Pour remplacer cette boite de dialogue par défaut, traitez l'évènement DataError."

Je ne comprends pas tout...
Merci pour l'aide.
RV