关于winforms:C#将文件拖放到表单中

C# drag and drop files to form

如何通过拖放将文件加载到表单中?

将出现哪个事件?

我应该使用哪个组件?

在将文件拖放到表单后,如何确定文件名和其他属性?

谢谢您!

代码

1
2
3
4
5
6
7
8
9
   private void panel1_DragEnter(object sender, DragEventsArgs e){
        if (e.Data.GetDataPresent(DataFormats.Text)){
              e.Effect = DragDropEffects.Move;
              MessageBox.Show(e.Data.GetData(DataFormats.Text).toString());
        }
        if (e.Data.GetDataPresent(DataFormats.FileDrop)){

        }
   }

好的,这行得通。

文件呢?如何获取文件名和扩展名?

而这仅仅是一个dragEnter行动。


此代码将遍历并打印拖动到窗口中的所有文件的全名(包括扩展名):

1
2
3
4
5
6
7
8
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
      string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
      foreach (string filePath in files)
      {
          Console.WriteLine(filePath);
      }
}

有关详细信息,请查看以下链接

Drag and Drop Files into winforms

1
2
3
4
5
6
7
8
9
10
11
12
13
private void Form2_DragDrop(object sender, DragEventArgs e) {
  if (e.Data.GetDataPresent(DataFormats.FileDrop)) {
    string[] filePaths = (string[])(e.Data.GetData(DataFormats.FileDrop));
    foreach (string fileLoc in filePaths) {
      // Code to read the contents of the text file
      if (File.Exists(fileLoc)) {
        using (TextReader tr = new StreamReader(fileLoc)) {
          MessageBox.Show(tr.ReadToEnd());
        }
      }
    }
  }
}

谢谢。