Problème avec le databinding
Bonjour
J’ai un pti bug que je ne comprends pas.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
{
ClearLabelEtTextBoxs();
if ((treeView1.SelectedNode) is NodePli)
{
ER_Pli pli;
pli = (ER_Pli)((NodePli)e.Node).Pli;
labIDBO.DataBindings.Add("text", pli, "Id");
labCaptionIdParent.Text = "Id Lot";
labIDParent.DataBindings.Add("Text", pli, "IdLot");
//tbNomEntité.DataBindings.Add("Text", pli, "IdLot");
tbNomEntité.DataBindings.Add("Text", pli, "Nom");
} |
Le but du code est de lier des labels et des zones de texte à des objet ER_Pli, eux-mêmes contenus dans une propriété Pli des nodes d’un TreeView. Quand un clique sur un nœud du treeview, le databinding a lieu.
Il devrait, plutôt. Cela fonctionne correctement jusqu’à la ligne « tbNomEntité.DataBindings.Add("Text", pli, "Nom"); », où j’ai une erreur me disant :
Citation:
System.InvalidCastException was unhandled
Message="Impossible d'effectuer un cast d'un objet de type 'GestionEntité.NodePli' en type 'GestionEntité.NodeUS'."
NodePli est le descendant de TreeNode qui contient l’objet « pli » qui est lié dans le databinding. Je récupère l’objet « pli » dans la ligne « pli = (ER_Pli)((NodePli)e.Node).Pli; » . Je ne comprends pas pourquoi il essaie de faire un cast de NodePli vers NodeUS. Pli a bien une propriété « Nom ». Et si à la place je mets la ligne en commentaire (tbNomEntité.DataBindings.Add("Text", pli, "IdLot"); ), cela passe. C’est bien le string « Nom » qui semble déclencher le problème.
Je n’ai pas la moindre idée du pourquoi.
Des pistes ?
Merci
Richard