我在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;
}
拖动效果和文件接收都不起作用。没有错误消息或警告。可能是什么问题?
更新:我在事件处理程序方法中插入了断点,无论我对光标做什么,代码都不会首先进入它们。
答案 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;
}