Quantcast
Channel: VBForums
Viewing all articles
Browse latest Browse all 15129

VS 2019 get treenode image under cursor during dragging from Treeview to panel

$
0
0
Hi all,
I'm trying to custom Drag Cursor with a picture where this picture shows name of treenode like this:

Name:  image.png
Views: 14
Size:  16.2 KB

Afterwards this picture can drop on Panel2 as label or image

I'm using code example from here:
https://www.vbforums.com/showthread....e+under+cursor

My code is:

Code:

Public Sub New()
        InitializeComponent()
        pos = 10
        TreeView1.AllowDrop = True
        Panel2.AllowDrop = True
        AddHandler Panel2.DragEnter, AddressOf Panel2_DragEnter
        imageListDrag = New ImageList
        imageListDrag.Images.Add("node", My.Resources.segno)
        Dim MyNode As TreeNode = TreeView1.Nodes.Add("NODE")
        nodes = {"node1", "node2", "node3", "node4", "node1", "node5", "node6", "node7", "node8", "node9", "node123456789"}
        TreeView1.ImageList = imageListDrag
        TreeView1.ImageIndex = 0
        TreeView1.SelectedImageIndex = 1
        For Each ele As String In nodes
            MyNode.Nodes.Add(ele)
        Next
    End Sub
       
        Private Sub TreeView1_GiveFeedback(ByVal sender As Object, ByVal e As GiveFeedbackEventArgs) Handles TreeView1.GiveFeedback
        e.UseDefaultCursors = False
        If (e.Effect = DragDropEffects.Move) Then
            e.UseDefaultCursors = False
            'Cursor.Current = TreeView1.Cursor
            TreeView1.Cursor = Cursors.Default
        Else
            e.UseDefaultCursors = True
        End If

    End Sub

Private Sub TreeView1_ItemDrag(ByVal sender As Object, ByVal e As ItemDragEventArgs) Handles TreeView1.ItemDrag
        Dim aNode As TreeNode = CType(e.Item, TreeNode)
        aNode = e.Item
        aNode.BackColor = Color.Yellow
        'nome_KPI = tNode.Text
     
        ' Create New bitmap
        'This bitmap will contain the tree node image to be dragged
        Dim bmp As Bitmap = New Bitmap(aNode.Bounds.Width + TreeView1.Indent, aNode.Bounds.Height)

        'Get graphics from bitmap
        Dim gr As Graphics = Graphics.FromImage(bmp)
        gr.FillRectangle(Brushes.Magenta, bmp.GetBounds(Drawing.GraphicsUnit.Pixel))
       
        'Get mouse position in client coordinates
        Dim p As Point = TreeView1.PointToClient(Control.MousePosition)

        'Compute delta between mouse position And node bounds
        Dim dx As Integer = p.X + TreeView1.Indent - aNode.Bounds.Left
        Dim dy As Integer = p.Y - aNode.Bounds.Top

        gr.DrawImage(bmp, dx, dy, aNode.Bounds.Width + TreeView1.Indent, aNode.Bounds.Height)
        gr.DrawString(aNode.Text, TreeView1.Font, New SolidBrush(TreeView1.ForeColor), TreeView1.Indent, 1.0F)
        Me.Cursor = create.CreateCursor(bmp, dx, dy)

             
    End Sub
       
        Private Sub Panel2_DragEnter(sender As System.Object, e As System.Windows.Forms.DragEventArgs) Handles Panel2.DragEnter
       
        If e.Data.GetDataPresent("System.Windows.Forms.TreeNode", True) Then
            'TreeNode found allow move effect
            e.Effect = DragDropEffects.Copy
        Else
            'No TreeNode found, prevent move
            e.Effect = DragDropEffects.None
        End If
    End Sub

    Public Sub Panel2_DragDrop(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DragEventArgs) _
    Handles Panel2.DragDrop
        'Example with label
                MyLabel = New Label
       
        MyLabel.Text = aNode.Text
        MyLabel.BackColor = Color.Yellow
        Dim myfont As New Font("Sans Serif", 10, FontStyle.Bold)
        MyLabel.Font = myfont
        MyLabel.Left = pos
        MyLabel.Top = 10
        MyLabel.Width = 90
        MyLabel.Height = 20
        Panel2.Controls.Add(MyLabel)
        pos += 110
       
    End Sub

Class create is present in link above

When MouseDown is triggered and I move mouse, output is:

Name:  image1.jpg
Views: 14
Size:  8.2 KB

My issues:
1. treenode image isn't showed.
2. After MouseDown release, Cursor is always with Treenode image
3. Effect Copy on panel2 is not showed

Any suggestion?
Thank in advanced
gio
Attached Images
  

Viewing all articles
Browse latest Browse all 15129

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>