Oppure

Loading
20/10/17 10:09
Goodman85
Ciao a tutti,
ho un problema nell'esecuzione di un progammino in vb.
Ho creato un form con 2 treeview, semplicemente devo fare il drag & drop da un tree ad un altro.
Ho scritto il codice ma in fase di rilascio del nodo ho il seguente errore:

System.NullReferenceException: 'Riferimento a un oggetto non impostato su un'istanza di oggetto.'

allegato immagine.

Non riesco in nessun modo a risolvere.

Avete info?
aaa
20/10/17 14:39
Thejuster
Significa che cerchi di aggiungere al momento del drop un elemento che non è quello tenuto dal drag.

Inserisci un breackpoint dove dai alla variabile l'elemento in drag e controlla di che tipo è.

Oppure sbagli ad eseguire tutto il processo ddl drag e drop
Ultima modifica effettuata da Thejuster 20/10/17 14:40
mire.forumfree.it/ - Mire Engine
C# UI Designer
21/10/17 5:30
Goodman85
Postato originariamente da Thejuster:

Significa che cerchi di aggiungere al momento del drop un elemento che non è quello tenuto dal drag.

Inserisci un breackpoint dove dai alla variabile l'elemento in drag e controlla di che tipo è.

Oppure sbagli ad eseguire tutto il processo ddl drag e drop


Grazie per la risposta,
la variabile me la da nulla (Nothing)

Il problema che il codice l'ho trovato direttamente sulla guida di MSN.

8-|

questo è il codice:


Public Class Form1

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim Parentnode1 As TreeNode
        Dim ParentNode2 As TreeNode

        Parentnode1 = TreeView1.Nodes.Add("TV 1")

        With Parentnode1
            .Nodes.Add("TV1 Primo Figlio")
            .Nodes.Add("TV1 Secondo Figlio")
            .Nodes.Add("TV1 Terzo Figlio")
            .Nodes.Add("TV1 Quarto Figlio")
            .Expand()
        End With

        ParentNode2 = TreeView2.Nodes.Add("TV 2")

        With ParentNode2
            .Nodes.Add("TV2 Primo Figlio")
            .Nodes.Add("TV2 Secondo Figlio")
            .Expand()
        End With

    End Sub

    Private Sub TreeView1_ItemDrag(sender As Object, e As ItemDragEventArgs) Handles TreeView1.ItemDrag
        DoDragDrop(e.Item, DragDropEffects.Move)
    End Sub

    Private Sub TreeView2_DragDrop(sender As Object, e As DragEventArgs) Handles TreeView2.DragDrop
        Dim NewNode As TreeNode

        If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", False) Then
            Dim pt As Point
            Dim DestinationNode As TreeNode
            pt = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
            DestinationNode = CType(sender, TreeView).GetNodeAt(pt)
            NewNode = CType(e.Data.GetData("System.Windows.Form.TreeNode"), TreeNode)

            If Not DestinationNode.TreeView Is NewNode.TreeView Then
                DestinationNode.Nodes.Add(NewNode.Clone)
                DestinationNode.Expand()
                NewNode.Remove()
            End If
        End If
    End Sub

    Private Sub TreeView2_DragEnter(sender As Object, e As DragEventArgs) Handles TreeView2.DragEnter
        e.Effect = DragDropEffects.Move
    End Sub
End Class



allego immagine con la variabile nothing

Ultima modifica effettuata da Thejuster 23/10/17 8:00
aaa
23/10/17 8:10
Thejuster
Non comprendo molto bene il vb.net

Ma i problemi possono essere diversi.


Dim NewNode As TreeNode



Per questo ti avevo chiesto di inserire un breakpoint al punto in cui andavi ad eseguire questa operazione.


Sei sicuro che si sta trascinando un Nodo e non un NodeItem?

Inserisci un breakpoint qui


DoDragDrop(e.Item, DragDropEffects.Move)

controlla e.Item di cosa si tratta e cosa stai trascinando prima di convertire l'elemento
in quello che credi possa essere.


Da quel che vedo posso solo dedurre che


 pt = CType(sender, TreeView).PointToClient(New Point(e.X, e.Y))
 DestinationNode = CType(sender, TreeView).GetNodeAt(pt)




uno di questi due valori sia vuoto.
O non esattamente che sia un treeview.


Ti consiglio di dare uno sguardo a questo tutorial scritto da TheDarkJuster.
Visto che pochi conoscono l'esistenza di questo tool fondamentale per un programmatore.

pierotofy.it/pages/guide_tutorials/CPlusPlus/Come_si_usa_e_a_cosa_serve_un_debugger/




mire.forumfree.it/ - Mire Engine
C# UI Designer