Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsFree MagazinesWhite PapersSubmit Content
Discussion GroupsASP.NETWindows FormsLanguages.NET FrameworkVisual Studio.NET
Articles.NET FrameworkASP.NETToolsWindows Forms
.NET DirectoryOpen Source ProjectsUser GroupsWeb Resources
Related Topics
Visual Basic 6SQL ServerMS AccessOther DB ProductsMS Server ProductsMore Topics ...

.NET Forum / Languages / VB.NET / April 2007

Tip: Looking for answers? Try searching our database.

DragDrop Question

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
Ratnesh Raval - 06 Apr 2007 18:38 GMT
Hi All,

My question is on DragDrop,

How would I implement a Drag from listview and Drop on Desktop or any other
folder on the computer.

The listview contains list of files, so basically I should be able to drop
those files on other folders in my computer.

I hope that's possible in .net 2.0

Thanks

Ratnesh
Ratnesh Raval - 19 Apr 2007 00:37 GMT
bump

if anybody knows the answer

> Hi All,
>
[quoted text clipped - 11 lines]
>
> Ratnesh
Lloyd Sheen - 19 Apr 2007 17:00 GMT
> bump
>
[quoted text clipped - 15 lines]
>>
>> Ratnesh

Ratnesh,

I am at work right now so I don't have access to my home PC.  I do have a
sample of drag and drop of files.  It is quite simple but I will post a
little of the code when I get home.

LS
Lloyd Sheen - 19 Apr 2007 18:16 GMT
>> bump
>>
[quoted text clipped - 23 lines]
>
> LS
Ratnesh,

   Here is some sample code:

The following are variables used for the D&D processsing of mouse moves.

   Private _MouseDown As Boolean = False
   Private _MouseX As Integer
   Private _MouseY As Integer
   Private _MouseButtons As MouseButtons
   Private _SwitchContext As Boolean = False

The following happens when the mouse button is pressed over my listview

   Private Sub List_MouseDown(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles SongFileView.MouseDown
       _MouseButtons = e.Button
       _SwitchContext = False
       _MouseDown = True
       _MouseX = e.X
       _MouseY = e.Y
   End Sub

The following happens on a move of the mouse.  I use a test for the distance
the mouse has moved to prevent false drag drop operations:

   Private Sub List_MouseMove(ByVal sender As System.Object, ByVal e As
System.Windows.Forms.MouseEventArgs) Handles SongFileView.MouseMove
       Dim lv As ListView = DirectCast(sender, ListView)
       Dim sc As New StringCollection

       If _MouseDown Then
           If Math.Abs(_MouseX - e.X) < 5 Or Math.Abs(_MouseY - e.Y) < 5
Then
               Exit Sub
           End If
           Dim xx As DataObject = New DataObject
           Dim yy As ArrayList = New ArrayList
           For Each idx As Integer In lv.SelectedIndices
               Dim li As ListViewItem = lv.Items(idx)
               yy.Add(li.SubItems(5).Text + "\" + li.Text)
               sc.Add(li.SubItems(5).Text + "\" + li.Text)
           Next

           Dim zz As Array = yy.ToArray
           xx.SetFileDropList(sc)
           xx.SetData("ListItems", lv.SelectedItems)
           Try
               lv.DoDragDrop(xx, DragDropEffects.Copy)
               _MouseDown = False
           Catch ex As Exception
               Dim zzzz As Integer = 1
           End Try

       End If
   End Sub

The following will reset the D&D if the mouse button is release over the
listview:

   Private Sub SongFileView_MouseUp(ByVal sender As System.Object, ByVal e
As System.Windows.Forms.MouseEventArgs) Handles SongFileView.MouseUp
       _MouseDown = False
   End Sub

Hope this helps:

Lloyd Sheen
RobinS - 20 Apr 2007 07:58 GMT
>>> bump
>>>
[quoted text clipped - 91 lines]
>
> Lloyd Sheen

Well, it helped *me*! Thanks!

Robin S.
Ratnesh Raval - 23 Apr 2007 23:12 GMT
Hey Lloyd Sheen,

Thanks for the help, that code really works.

But I am still getting some problem. Because I am trying to implement a
listview, in which
1.  I am dragging files from explorer and droping in it,
2.  Dragging files inside listview to another folder,
3.  Dragging files from listview and dropping in windows explorer.

and trying to make everything work is giving problems

Thnx for your snippet.

R

>>> bump
>>>
[quoted text clipped - 91 lines]
>
> Lloyd Sheen
Lloyd Sheen - 24 Apr 2007 14:57 GMT
> Hey Lloyd Sheen,
>
[quoted text clipped - 107 lines]
>>
>> Lloyd Sheen

When you say problems, what are the problems.  For a drag from explorer to
your listview you will get the DataObject passed and check to ensure that
correct format is available for what you need to do.

Lloyd
Ratnesh Raval - 30 Apr 2007 18:51 GMT
>> Hey Lloyd Sheen,
>>
[quoted text clipped - 113 lines]
>
> Lloyd

Hi Lloyd,

The problems are,

For a drag from explorer to listview,  i get the dataobjects -- which are
files.
For a drag within listview, i have to pass dataobjects -- which are
listviewitems. ( so you can drop them within another folder inside listview)
For a drag from listview to explorer, i've to pass dataobjects -- which are
files (listviewitems but for explorer i've to pass them as files)

so basically, when dragging out from listview ,  I am not sure how to
detect,  if somebody is going to drop them in listview itself or in the
explorer.
so i pass the items on listview to Dataobjects either as files or as
listviewitems.

I think i made it clear to understand.

Thanks
R
Lloyd Sheen - 30 Apr 2007 19:33 GMT
>>> Hey Lloyd Sheen,
>>>
[quoted text clipped - 138 lines]
> Thanks
> R

I am not sure why you would have to have two different situations.  Simply
pick the way that works with the external program in this case Explorer and
then ensure that your application will respond in the same manner.  In my
app the listview items do represent files and by creating the dataobjects I
can drag from Windows into my app and from my app into windows.

If there is something I am missing please let me know I and I will see if I
can help.

Lloyd Sheen
Ratnesh Raval - 30 Apr 2007 19:51 GMT
>> Hi Lloyd,
>>
[quoted text clipped - 30 lines]
>
> Lloyd Sheen

my listview works as file explorer.  so there are 3 situations
1. drag file from explorer  -- > drop in listview
2. drag file from listview  ---> drop in explorer.
3. drag file from listview ---> drop inside the same listview but inside
some folder which is shown in the listview

if you look in your case, what if you want to move some file inside some
folder in listview itself ( not in the explorer),

if you want i will post it with codes.

R
Lloyd Sheen - 30 Apr 2007 20:14 GMT
>>> Hi Lloyd,
>>>
[quoted text clipped - 43 lines]
>
> R

I don't have the 3rd case in my app but it would be the same.  Each
dataobject is representative of one file.  Then when the drop happens each
dataobject will be a file and the app can do the appropriate thing.  Perhaps
you are refering to moving a file.  In that case you would get the result of
the drag / drop (not in my code) and then if a copy occurred do (most likely
nothing) , a move would delete the file in the source etc.

If you use the code and drag a file from the explorer and then return a
"Move" result you should see the file disappear from folder in explorer.
You can do the same thing in your app.

Lloyd

Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2008 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.