打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
WinForm中拖动文件夹到窗口组件上记录路径

比如winform 窗口上有个ListBox组件,我想拖动系统中的文件夹到ListBox组件上,松开鼠标,ListBox能够记录显示选中的文件夹的路径,有了路径,就可以处理路径文件夹下的图片、文本、视频等内容了。具体做法:

  •  在WinForms窗口上添加一个ListBox组件。你可以在设计视图中拖拽一个ListBox控件到窗口上,或者通过代码创建一个ListBox实例并将其添加到窗口的Controls集合中。

  • 启用ListBox的拖放功能。将ListBox的AllowDrop属性设置为true,这样它就可以接收拖放操作。

  • 添加事件处理程序。为ListBox控件的以下三个事件添加事件处理程序:
    DragEnter:当拖动操作进入ListBox控件的边界时触发。
    DragDrop:当拖动操作完成并释放鼠标按钮时触发。
    DragOver:当拖动操作在ListBox控件上进行时触发(可选,用于提供视觉反馈)。
    可以通过在设计器中双击ListBox控件,自动创建这些事件处理程序的骨架代码。

  • 在DragEnter事件处理程序中,将拖动操作的效果设置为拷贝(Copy)。这样当拖动文件夹时,鼠标指针将显示一个"+"符号,表示可以拷贝。

private void listBox_DragEnter(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy;
    }
}

  5.在DragDrop事件处理程序中,获取拖放的文件夹路径,并将其添加到ListBox中。

private void listBox_DragDrop(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        string[] folders = (string[])e.Data.GetData(DataFormats.FileDrop);

        foreach (string folderPath in folders)
        {
            if (System.IO.Directory.Exists(folderPath))
            {
                listBox.Items.Add(folderPath);
            }
        }
    }
}

这段代码将遍历拖放的文件夹路径数组,并将每个存在的文件夹路径添加到ListBox中。

6.可选:在DragOver事件处理程序中提供视觉反馈,比如更改鼠标指针的外观。

private void listBox_DragOver(object sender, DragEventArgs e)
{
    if (e.Data.GetDataPresent(DataFormats.FileDrop))
    {
        e.Effect = DragDropEffects.Copy;
    }
}

这段代码将在拖动操作在ListBox上进行时,将鼠标指针的效果设置为拷贝。

现在我们的的WinForms窗口上的ListBox组件应该可以接收系统中的文件夹的拖放操作,并将选中文件夹的路径记录并显示在ListBox中。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
vb.net入门——在 Windows 窗体中执行拖放操作
C# 拖放操作源码详解二
C# 实现控件拖动(DragDrop)功能简介
如何更换winform的界面皮肤
拖动文本文档到richTextBox1中
Delphi for iOS开发指南(15):在iOS应用程序中使用SQLite
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服