Solved

change icon of drag treeview node

Posted on 2009-05-14
14
429 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
  • 7
  • 6
14 Comments
 
LVL 83

Expert Comment

by:CodeCruiser
Comment Utility
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
Comment Utility
1 - can you send me link where microsoft is posted these comments.
2 - we can not do this thing in vb.net?
0
 
LVL 83

Expert Comment

by:CodeCruiser
Comment Utility
0
 

Author Comment

by:farjack1
Comment Utility
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
Comment Utility
Do you want to use the custom icon or the default icon?
0
 

Author Comment

by:farjack1
Comment Utility
i want to use my gif or icon files
0
 
LVL 83

Expert Comment

by:CodeCruiser
Comment Utility
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
Threat Intelligence Starter Resources

Integrating threat intelligence can be challenging, and not all companies are ready. These resources can help you build awareness and prepare for defense.

 

Author Comment

by:farjack1
Comment Utility
how we can use default icons?
0
 
LVL 83

Expert Comment

by:CodeCruiser
Comment Utility
lblTextSource1.DoDragDrop( lblTextSource1.Text, DragDropEffects.Copy)
lblTextSource1.DoDragDrop( lblTextSource1.Text, DragDropEffects.Move)
0
 

Author Comment

by:farjack1
Comment Utility
i am draging tree node and droping on tree node  
0
 

Author Comment

by:farjack1
Comment Utility
i want to change icon on detination tree as well
0
 
LVL 83

Expert Comment

by:CodeCruiser
Comment Utility
0
 

Accepted Solution

by:
lkalvin earned 500 total points
Comment Utility
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
Comment Utility
BRILLIANT. So you do not know the difference between icon and cursor!!!
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Introduction As chip makers focus on adding processor cores over increasing clock speed, developers need to utilize the features of modern CPUs.  One of the ways we can do this is by implementing parallel algorithms in our software.   One recent…
It’s quite interesting for me as I worked with Excel using vb.net for some time. Here are some topics which I know want to share with others whom this might help. First of all if you are working with Excel then you need to Download the Following …
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
This video demonstrates how to create an example email signature rule for a department in a company using CodeTwo Exchange Rules. The signature will be inserted beneath users' latest emails in conversations and will be displayed in users' Sent Items…

772 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

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now