Drag & Drop text

R

Ray Mitchell

Hello,

Implementing drag & drop in C# seems pretty easy. However, in attempting to
do so I ran into an issue that I don't understand. I found that I could drag
& drop icons but when I tried to drag & drop text it would always display the
red circle with the bar through it, so I would never even get to the point of
being allowed to drop it. As first I thought it was something wrong in my
code (which it may still be), but when I tried to drag & drop text between
two 3rd party text editor applications like Wordpad and UltraEdit, it
wouldn't let me do that either. However, I could drag text from one point to
another within the same application. Do you have any idea why dragging &
dropping text between different applications wouldn't work?

Thanks,
Ray
 
P

Peter Duniho

Ray said:
Hello,

Implementing drag & drop in C# seems pretty easy. However, in attempting to
do so I ran into an issue that I don't understand. I found that I could drag
& drop icons but when I tried to drag & drop text it would always display the
red circle with the bar through it, so I would never even get to the point of
being allowed to drop it. As first I thought it was something wrong in my
code (which it may still be), but when I tried to drag & drop text between
two 3rd party text editor applications like Wordpad and UltraEdit, it
wouldn't let me do that either. However, I could drag text from one point to
another within the same application. Do you have any idea why dragging &
dropping text between different applications wouldn't work?

If you've looked into how drag & drop is implemented in your
application, then you know that your application has to handle certain
events, and in doing so has to inspect the data types available on the
clipboard and decide whether it can handle those data types or not.

I can't explain the specific behavior between Wordpad and UltraEdit, but
presumably neither is publishing on the clipboard a data format the
other recognizes. Likewise, if you want to be able to drag & drop text
into your application, you need to make sure that a) the application
sending the text is really putting a text format on the clipboard, and
b) your application is really reporting that it can handle the text
format on the clipboard, and of course c) that it actually _can_ handle
the text format on the clipboard.

There are multiple types of text formats (e.g. plain text and RTF), so
make sure your application is able to handle the ones you care about.

Without a concise-but-complete code example that reliably demonstrates
the problem, it would not be possible to provide advice much more
specific than the above with respect to what is actually wrong with your
program.

Pete
 
R

Ray Mitchell

Peter Duniho said:
If you've looked into how drag & drop is implemented in your
application, then you know that your application has to handle certain
events, and in doing so has to inspect the data types available on the
clipboard and decide whether it can handle those data types or not.

I can't explain the specific behavior between Wordpad and UltraEdit, but
presumably neither is publishing on the clipboard a data format the
other recognizes. Likewise, if you want to be able to drag & drop text
into your application, you need to make sure that a) the application
sending the text is really putting a text format on the clipboard, and
b) your application is really reporting that it can handle the text
format on the clipboard, and of course c) that it actually _can_ handle
the text format on the clipboard.

There are multiple types of text formats (e.g. plain text and RTF), so
make sure your application is able to handle the ones you care about.

Without a concise-but-complete code example that reliably demonstrates
the problem, it would not be possible to provide advice much more
specific than the above with respect to what is actually wrong with your
program.

Pete
.
Hi Pete,

Yes, I have implemented the proper events in my code and I am considering
the various types of things that may be dragged and dropped. However, you
mention something that is probably at the root of the problem. Obviously I
don't know much about the underlying mechanisms that make drag and drop work
so I just assumed that if drag and drop worked withing a particular
application it should also work between such applications, such as between
UltraEdit and Wordpad. But you mentioned that an application might not
actually use the clipboard to perform drag and drop of text, so that is
probably the reason for the behavior I am seeing. So, how would such
applications be doing drag and drop of text if they don't do it that way? Is
there some reason that they would want to do it that way instead?

Thanks,
Ray
 
P

Peter Duniho

Ray said:
[...] But you mentioned that an application might not
actually use the clipboard to perform drag and drop of text, so that is
probably the reason for the behavior I am seeing. So, how would such
applications be doing drag and drop of text if they don't do it that way? Is
there some reason that they would want to do it that way instead?

An application may bypass the clipboard when doing D&D internally simply
because it's more efficient. Even if it does use the clipboard, it may
put some proprietary format onto the clipboard rather than one that is
portable to other applications.


Basically, you need to write your drag/drop target code so that you
accept as many different pre-defined formats as possible (see the
clipboard API for specific formats), and then hope that the other
application will in fact be publishing one of those formats on the
clipboard when it acts as a drag/drop source.

Pete
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top