如何使Drag& Drop工作?

时间:2016-06-03 09:44:10

标签: c# winforms event-handling

我在Visual Studio中的winform上有一个文本框。我想拖放文件。这就是我所做的:

public LangMerge()
{   InitializeComponent();
    this.AllowDrop = true;
    tbxFilepath.AllowDrop = true;
    tbxFilepath.DragDrop += new DragEventHandler(tbxFilepath_DragDrop);
    tbxFilepath.DragEnter += new DragEventHandler(tbxFilepath_DragEnter);
}
void tbxFilepath_DragDrop(object sender, DragEventArgs e)
{
    string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
    foreach (string file in files) tbxFilepath.Text=(file);
}
void tbxFilepath_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop)) e.Effect = DragDropEffects.Copy;
}

拖动效果和文件接收都不起作用。没有错误消息或警告。可能是什么问题?

更新:我在事件处理程序方法中插入了断点,无论我对光标做什么,代码都不会首先进入它们。

1 个答案:

答案 0 :(得分:0)

您已设置AllowDrop=true;并处理了DragDrop()DragEnter()个事件,但是对于winforms应用,您还需要处理TextBox.DragOver()个事件:

这样的事情:

private void textBoxFile_DragOver(object sender, DragEventArgs e)
{
   if (e.Data.GetDataPresent(DataFormats.FileDrop))
     e.Effect = DragDropEffects.Copy;
   else
     e.Effect = DragDropEffects.None;
 }