Bonjour

J’ai un pti bug que je ne comprends pas.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
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