I want to drag and drop a file so that the textbox shows the full file path. I have used the drag enter and drag drop events but I find that they are not entering the events.
private void sslCertField_DragDrop(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop, false) == true)
{
e.Effect = DragDropEffects.All;
}
}
private void sslCertField_DragEnter(object sender, DragEventArgs e)
{
string file = (string)e.Data.GetData(DataFormats.FileDrop);
serverURLField.Text = file;
}
Can anyone point out what I am doing wrong?
UPDATE: Does not work if program is set to run with elevated permissions (vista/win 7)
Check the AllowDrop
property of your textbox - it should be set to true
.
Also, convert drag-drop data to string[]
in case of DataFormats.FileDrop
, not just string
:
string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
if(files != null && files.Length != 0)
{
serverURLField.Text = files[0];
}
And I think you should swap code in your drag event handlers - usually you show user that drag-drop is possible in DragEnter
and perform actual operation on DragDrop
.
Elevated privileges should not have anything to do with it. You also need to implement the DragOver
event in addition to the DragDrop
that Max answered. This is the code that should be added for DragDrop:
private void textBoxFile_DragOver(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy;
else
e.Effect = DragDropEffects.None;
}
dont run it from visual studio... run the .exe which is created once you build your solution.. hope that helps :)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With