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:
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
I'm trying to custom Drag Cursor with a picture where this picture shows name of treenode like this:
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
When MouseDown is triggered and I move mouse, output is:
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