获取拖入 Windows 窗体窗体的文件的路径

Posted

技术标签:

【中文标题】获取拖入 Windows 窗体窗体的文件的路径【英文标题】:Get the path of a file dragged into a Windows Forms form 【发布时间】:2011-05-20 20:23:57 【问题描述】:

我正在开发一个应用程序,它要求用户将文件从Windows Explorer 拖到应用程序窗口(@98​​7654322@ 表单)。有没有办法在C#中读取文件的文件名、路径和其他属性?

【问题讨论】:

Drag and Drop Text Files from Windows Explorer to your Windows Form Application中有一个完整的例子。 【参考方案1】:

您可以捕获 DragDrop 事件并从那里获取文件。比如:

void Form_DragDrop(object sender, DragEventArgs e)

    string[] fileList = (string[])e.Data.GetData(DataFormats.FileDrop, false);

    //more processing

【讨论】:

我也会为 InvalidCastException 抛出一个 try/catch,以防用户尝试拖入其他东西! 我不允许进行单字符编辑,所以我留下这个评论:FileList 应该是驼峰式:fileList 在表单上保存文件不允许我删除文件。为什么?它给了我不允许的标志..【参考方案2】:

你应该使用两个事件 1) 拖放 2) 拖动输入

还将面板/表单的“AllowDrop”属性启用为true

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

    private void form_DragDrop(object sender, DragEventArgs e)
    
        string[] filePaths= (string[])e.Data.GetData(DataFormats.FileDrop, false);
    

【讨论】:

以上是关于获取拖入 Windows 窗体窗体的文件的路径的主要内容,如果未能解决你的问题,请参考以下文章

wpf 窗体中如何取得xaml的路径

Windows窗体编程你也行

如何在 Windows 窗体应用程序中保存应用程序设置?

Windows 窗体应用程序和 Windows 窗体应用程序 (.NET Framework) 有啥区别

游戏窗体创建

我用C#编写的一个Windows窗体程序怎么样打包成一个安装包?