要触发DragDrop事件需要触发DragEnter和DragDrop事件:
private void frmMain_DragEnter(object sender, DragEventArgs e)
{
if(e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Move;
else
e.Effect = DragDropEffects.None;
}
private void frmMain_DragDrop(object sender, DragEventArgs e)
{
string[] s = (string[]) e.Data.GetData(DataFormats.FileDrop, false);
int i;
for(i = 0; i < s.Length; i++)
listBox1.Items.Add(s[i]);
}
有两方面原因导致没有触发:
1. 是没有把对应控件或窗体的AllowDrop设置为true
2. 是程序如果以管理员身份运行的话是无法触发拖放事件的。
针对第二点:可以做个小实验,
以管理员身份运行记事本程序,拖拽一个文本文件到程序,可以发现无法实现打开该文本。
参考: