Still celebrating National IT Professionals Day with 3 months of free Premium Membership. Use Code ITDAY17

x
?
Solved

change icon of drag treeview node

Posted on 2009-05-14
14
Medium Priority
?
448 Views
Last Modified: 2012-05-07
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
Comment
Question by:farjack1
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 7
  • 6
14 Comments
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 24393795
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
 

Author Comment

by:farjack1
ID: 24394977
1 - can you send me link where microsoft is posted these comments.
2 - we can not do this thing in vb.net?
0
Industry Leaders: 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!

 

Author Comment

by:farjack1
ID: 24400049
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
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 24400420
Do you want to use the custom icon or the default icon?
0
 

Author Comment

by:farjack1
ID: 24400432
i want to use my gif or icon files
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 24400437
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
 

Author Comment

by:farjack1
ID: 24400441
how we can use default icons?
0
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 24400453
lblTextSource1.DoDragDrop( lblTextSource1.Text, DragDropEffects.Copy)
lblTextSource1.DoDragDrop( lblTextSource1.Text, DragDropEffects.Move)
0
 

Author Comment

by:farjack1
ID: 24400461
i am draging tree node and droping on tree node  
0
 

Author Comment

by:farjack1
ID: 24400479
i want to change icon on detination tree as well
0
 

Accepted Solution

by:
lkalvin earned 1500 total points
ID: 24401338
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
 
LVL 83

Expert Comment

by:CodeCruiser
ID: 24438793
BRILLIANT. So you do not know the difference between icon and cursor!!!
0

Featured Post

Independent Software Vendors: 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!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: Kraeven
Introduction Remote Share is a simple remote sharing tool, enabling you to see, add and remove remote or local shares. The application is written in VB.NET targeting the .NET framework 2.0. The source code and the compiled programs have been in…
I think the Typed DataTable and Typed DataSet are very good options when working with data, but I don't like auto-generated code. First, I create an Abstract Class for my DataTables Common Code.  This class Inherits from DataTable. Also, it can …
Have you created a query with information for a calendar? ... and then, abra-cadabra, the calendar is done?! I am going to show you how to make that happen. Visualize your data!  ... really see it To use the code to create a calendar from a q…
Want to learn how to record your desktop screen without having to use an outside camera. Click on this video and learn how to use the cool google extension called "Screencastify"! Step 1: Open a new google tab Step 2: Go to the left hand upper corn…

722 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question