文件拖放到窗体事件

网上的实现1

实现结果

具体实现代码:注意需要使能允许拖拽

cs 复制代码
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        this.AllowDrop = true;  //允许拖拽
    }

    private void Form1_DragEnter(object sender, DragEventArgs e)
    {
        this.Text = DateTime.Now.ToString();
        if(e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);
            foreach (string file in files)
            {
                listBox1.Items.Add(file);
            }
        }
    }
}

参考链接

拖放文件到窗体_哔哩哔哩_bilibilihttps://www.bilibili.com/video/BV13d4y1h7vr/?spm_id_from=333.999.0.0&vd_source=e821a225c7ba4a7b85e5aa6d013ac92e

完整的代码实例及信息描述

信息描述

在Windows Forms (WinForms) 应用程序中,如果你想实现一个功能,让用户能够通过拖拽文件到窗体上捕获文件的名称,你需要为窗体添加一个拖拽事件的处理器。这个事件通常称为 DragEnterDragDrop

以下是一个简单的示例,展示了如何在WinForms应用程序中实现文件拖拽功能,并捕获拖拽文件的名称:

代码实例

cs 复制代码
using System;  
using System.IO;  
using System.Windows.Forms;  
  
public partial class MainForm : Form  
{  
    public MainForm()  
    {  
        InitializeComponent();  
        // 允许窗体接受文件拖拽  
        this.AllowDrop = true;  
        // 为窗体添加拖拽事件处理器  
        this.DragEnter += new DragEventHandler(MainForm_DragEnter);  
        this.DragDrop += new DragEventHandler(MainForm_DragDrop);  
    }  
  
    // 当文件拖拽到窗体上时触发  
    private void MainForm_DragEnter(object sender, DragEventArgs e)  
    {  
        // 检查拖拽的数据是否包含文件  
        if (e.Data.GetDataPresent(DataFormats.FileDrop))  
        {  
            // 允许放置  
            e.Effect = DragDropEffects.Copy;  
        }  
    }  
  
    // 当文件被放置到窗体上时触发  
    private void MainForm_DragDrop(object sender, DragEventArgs e)  
    {  
        // 获取拖拽的文件列表  
        string[] files = (string[])e.Data.GetData(DataFormats.FileDrop);  
  
        // 遍历文件列表,处理每个文件  
        foreach (string file in files)  
        {  
            // 获取文件名  
            string fileName = Path.GetFileName(file);  
            // 显示文件名  
            MessageBox.Show("拖拽的文件名称: " + fileName);  
  
            // 这里你可以根据需要执行其他操作,如打开文件、处理文件内容等  
        }  
    }  
}

注意事项

在这个示例中,MainForm 类是窗体的类。在窗体的构造函数中,我们设置了 AllowDrop 属性为 true,这允许窗体接受拖拽操作。然后,我们为 DragEnterDragDrop 事件添加了事件处理器。

当文件拖拽到窗体上时,MainForm_DragEnter 方法会被调用,这里我们检查拖拽的数据是否包含文件,并设置拖拽效果为复制(DragDropEffects.Copy)。

当文件被放置到窗体上时,MainForm_DragDrop 方法会被调用。在这个方法中,我们从拖拽的数据中获取文件列表,并遍历每个文件,获取文件名并显示它。

请注意,你需要在你的WinForms应用程序中适当地放置这段代码,并确保你的窗体类名与示例中的 MainForm 匹配,或者相应地修改类名。此外,你可能还需要在窗体设计器中将 AllowDrop 属性设置为 true,或者通过代码设置它。

特此记录

anlog

2024年2月27日