Results 1 to 3 of 3

Thread: get treenode image under cursor during dragging from Treeview to panel

  1. #1

    Thread Starter
    Addicted Member
    Join Date
    Oct 2010
    Posts
    164

    get treenode image under cursor during dragging from Treeview to panel

    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: 335
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: 352
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

  2. #2

    Thread Starter
    Addicted Member
    Join Date
    Oct 2010
    Posts
    164

    Re: get treenode image under cursor during dragging from Treeview to panel

    Hi,
    actually I solved second point.
    I aadded
    AddHandler Panel2.MouseUp, AddressOf PictureMouseUp
    Code:
    Public Sub New()
           ...
            AddHandler Panel2.MouseUp, AddressOf PictureMouseUp
    where PictureMouseUp is:
    Code:
    Private Sub PictureMouseUp(ByVal sender As Object, ByVal e As MouseEventArgs)
            Me.Cursor = Cursors.Default
            Mylabel = New Label
            Mylabel.TextAlign = ContentAlignment.MiddleCenter
            Mylabel.Text = aNode.Text
            Mylabel.BackColor = Color.Yellow
            Dim myfont As New Font("Sans Serif", 12, FontStyle.Bold)
            Dim textSize As Size = TextRenderer.MeasureText(aNode.Text, myfont)
            Mylabel.Font = myfont
            Mylabel.Left = pos
            Mylabel.Top = 10
    
            Mylabel.Width = textSize.Width
            Mylabel.Height = 20
            Panel2.Controls.Add(Mylabel)
            pos += textSize.Width
        End Sub

  3. #3
    eXtreme Programmer .paul.'s Avatar
    Join Date
    May 2007
    Location
    Chelmsford UK
    Posts
    25,479

    Re: get treenode image under cursor during dragging from Treeview to panel

    Have a look at this. It's C#, but easily converted to VB

    https://help.syncfusion.com/windowsf.../drag-and-drop

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width