Highlight un noeud d'un treeview

Duracelle123 Messages postés 59 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 4 août 2015 - Modifié par Duracelle123 le 8/07/2014 à 02:52
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 - 9 juil. 2014 à 00:01
Bonjour, Je programme en Visual studio 2010. Je tente lors du Drag and Drop vers un treeview de highlight le noeud ou est la sourie est. Voici le code ou je reçois un message d'erreur.

Private Sub TVW_REPAS_DragOver(sender As Object, e As System.Windows.Forms.DragEventArgs) Handles TVW_REPAS.DragOver
' Retrieve the client coordinates of the mouse position.
Dim targetPoint As Point = TVW_REPAS.PointToClient(New Point(e.X, e.Y))

' Select the node at the mouse position.
TVW_REPAS.SelectedNode = TVW_REPAS.GetNodeAt(targetPoint)

TVW_REPAS.SelectedNode.BackColor = Color.Blue
TVW_REPAS.SelectedNode.ForeColor = Color.White
End Sub

L'erreur ce produit sur ces deux lignes:
TVW_REPAS.SelectedNode.BackColor = Color.Blue
TVW_REPAS.SelectedNode.ForeColor = Color.White

le message est: La référence d'objet n'est pas définie à une instance d'un objet.

Merci de votre aide.

3 réponses

Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
8 juil. 2014 à 08:12
Bonjour le message d'erreur est clair, une des variable vaut null.
Color doit être défini, tvw_repas à déjà servi plus haut, alors il ne te reste plus que selectednode.

0
Duracelle123 Messages postés 59 Date d'inscription lundi 11 janvier 2010 Statut Membre Dernière intervention 4 août 2015
Modifié par Duracelle123 le 8/07/2014 à 21:58
Bonjour, Merci de ta réponse mais je suis nouveau en vb.net. Pourrais-tu me donner un bout de code qui pourrais m'aidé s.v.p. Je ne comprend pas pourquoi il faut définir color alors qui fait partie des propriétés du treeview.

Merci
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
8 juil. 2014 à 23:05
Je me suis mal exprimé.
Je ne voulais pas dire que tu dois définir Color, mais qu'il y est puisque c'est un type system.
Je pense que c'est la sélection de nœud qui ne marche pas.



0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
8 juil. 2014 à 23:45
J'ai fait un test, avec les coordonnées 1,1 ça marche, mais pas avec les coordonnées 1,100.
        TreeView1.Nodes.Add("test noeud1")
        TreeView1.Nodes.Add("test noeud2")
        TreeView1.Nodes(0).Nodes.Add("test noeud1-2")
        'Dim monTreeNode As TreeNode = TreeView1.GetNodeAt(1, 1) 'ceci me selectionne "test noeud1"
        Dim monTreeNode As TreeNode = TreeView1.GetNodeAt(1, 100) 'ceci me retourne Nothing et forcément ça bug plus loin
        monTreeNode.BackColor = Color.Blue
        monTreeNode.ForeColor = Color.White


Il faut que tu testes si GetNodeAt ne vaut pas Nothing avant d'aller plus loin.
0
Whismeril Messages postés 19028 Date d'inscription mardi 11 mars 2003 Statut Non membre Dernière intervention 24 avril 2024 656
9 juil. 2014 à 00:01
un truc comme ça
        Dim monpoint As Point = TreeView1.PointToClient(New Point(e.X, e.Y))

        Dim monTreeNode As TreeNode = TreeView1.GetNodeAt(monpoint)

        If Not (monTreeNode Is Nothing) Then
            monTreeNode.BackColor = Color.Blue
            monTreeNode.ForeColor = Color.White
        End If
0
Rejoignez-nous