Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 452
  • Last Modified:

change icon of drag treeview node

i am using VS-2005 framework 2.0 how i can change the icon of draging node of tree on drag time and want to change icon conditionally and also icon should be same till destination tree node with mouse.  
0
farjack1
Asked:
farjack1
  • 7
  • 6
1 Solution
 
CodeCruiserCommented:
You would need to develop a Windows Shell Extension to acheive what you are trying to do. Microsoft recommends against developing Shell extensions in .NET. The favoured language is C++ and its a big project. so may be live with it!
0
 
farjack1Author Commented:
1 - can you send me link where microsoft is posted these comments.
2 - we can not do this thing in vb.net?
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
farjack1Author Commented:
Hi, i think maybe you did not understand my requirement.

1-  i want to drag tree node destination is other tree and its icon should be conditional
2-  when i will drop that node to destination tree on condition bases it mouse icon should be change
3 - Can i drag the same icon till destination node

this is my Q.

Thanks
 
0
 
CodeCruiserCommented:
Do you want to use the custom icon or the default icon?
0
 
farjack1Author Commented:
i want to use my gif or icon files
0
 
CodeCruiserCommented:
That's where you need to develop the shell extensions. I think you did not bother to read any of the articles. To show you own icon while dragging, you need to develop a shell extension. Check the last link and one of the templates is for drag icons.
0
 
farjack1Author Commented:
how we can use default icons?
0
 
CodeCruiserCommented:
lblTextSource1.DoDragDrop( lblTextSource1.Text, DragDropEffects.Copy)
lblTextSource1.DoDragDrop( lblTextSource1.Text, DragDropEffects.Move)
0
 
farjack1Author Commented:
i am draging tree node and droping on tree node  
0
 
farjack1Author Commented:
i want to change icon on detination tree as well
0
 
lkalvinCommented:
I could be missreading your question but it sounds like you're asking how to change the cursor when dragging over a specific control?

Basically, if you have more than one control on your form where dragging can BEGIN, you'll want to have a different identifier used when you DoDragDrop:

Like:
myTextBox.DoDragDrop("Dragging From myTextBox", DragDropEffects.Copy)
-or-
myTreeNode.DoDragDrop("Dragging From myTreeNode", DragDropEffects.Copy)

And if the target of the dragging is another TreeNode - in THAT node you can examine the contents of e.Data.GetDataPresent(DataFormats.StringFormat) to see where you started from:

Sub myNewTreeNode_DragOver(...e as System.Windows.Forms.DragEventArgs)
   If e.Data.GetDataPresent(DataFormats.StringFormat) Then
      Dim DragString As String = e.Data.GetDataPresent(DataFormats.StringFormat)
      Select Case DragString
         Case "Dragging From myTextBox"
             ' You know the drag came FROM myTextBox

         Case "Dragging From myTreeNode"
             ' You know the drag came FROM myTreeNode
         Case Else
      End Select
   End If
End Sub

This is (of course) PSEUDO CODE but there's very little missing - check out the Attached Code Snippet for a more detailed example of altering the cursor.


Private _Dragging As Boolean = False	' If True = Dragging has begun
 
Private Sub MyTreeNode_MouseDown(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyTreeNode.MouseDown
	_Dragging = True
End Sub
 
Private Sub MyTreeNode_MouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles MyTreeNode.MouseMove
	If _Dragging Then
		MyTreeNode.DoDragDrop("Some Text to Identify WHAT is being draggged", DragDropEffects.Copy)
	End If
	_Dragging = False
End Sub
 
Private Sub MyTreeNode_DragOver(ByVal sender As Object, ByVal e As System.Windows.Forms.DragEventArgs) Handles MyTreeNode.DragOver
	If e.Data.GetDataPresent(DataFormats.StringFormat) Then
		e.Effect = DragDropEffects.None
	End If
End Sub
 
Private Sub MyTreeNode_GiveFeedback(ByVal sender As Object, ByVal e As System.Windows.Forms.GiveFeedbackEventArgs) Handles MyTreeNode.GiveFeedback
	e.UseDefaultCursors = False
 
	If ((e.Effect And DragDropEffects.Copy) = DragDropEffects.Copy) Then
		Dim CustomCursor As Cursor = GetCustomCursor(0)
		Cursor.Current = CustomCursor
	Else
		Dim CustomCursor As Cursor = GetCustomCursor(1)
		Cursor.Current = CustomCursor
	End If
End Sub
 
Private Function GetCustomCursor(ByVal CursorType As Integer) As Cursor
	Dim myCursor as Cursor
	
	Select Case CursorType
		Case 0
			myCursor = *someDragcursor* ' Whatever you want your Drag-Drop cursor to be
			
		Case 1
			myCursor = *someBadcursor* ' Whatever you want your Drag-Drop cursor to be
 
		Case Else
			myCursor = *someDefaultcursor* ' Whatever you want your Drag-Drop cursor to be
	End Select
	
	Return myCursor
End Function

Open in new window

0
 
CodeCruiserCommented:
BRILLIANT. So you do not know the difference between icon and cursor!!!
0

Featured Post

Concerto's Cloud Advisory Services

Want to avoid the missteps to gaining all the benefits of the cloud? Learn more about the different assessment options from our Cloud Advisory team.

  • 7
  • 6
Tackle projects and never again get stuck behind a technical roadblock.
Join Now