电竞比分网-中国电竞赛事及体育赛事平台

分享

WinForm中拖動(dòng)文件夾到窗口組件上記錄路徑

 鴻蛟家平 2023-06-29 發(fā)布于江蘇

比如winform 窗口上有個(gè)ListBox組件,我想拖動(dòng)系統(tǒng)中的文件夾到ListBox組件上,松開鼠標(biāo),ListBox能夠記錄顯示選中的文件夾的路徑,有了路徑,就可以處理路徑文件夾下的圖片、文本、視頻等內(nèi)容了。具體做法:

  •  在WinForms窗口上添加一個(gè)ListBox組件。你可以在設(shè)計(jì)視圖中拖拽一個(gè)ListBox控件到窗口上,或者通過代碼創(chuàng)建一個(gè)ListBox實(shí)例并將其添加到窗口的Controls集合中。

  • 啟用ListBox的拖放功能。將ListBox的AllowDrop屬性設(shè)置為true,這樣它就可以接收拖放操作。

  • 添加事件處理程序。為ListBox控件的以下三個(gè)事件添加事件處理程序:
    DragEnter:當(dāng)拖動(dòng)操作進(jìn)入ListBox控件的邊界時(shí)觸發(fā)。
    DragDrop:當(dāng)拖動(dòng)操作完成并釋放鼠標(biāo)按鈕時(shí)觸發(fā)。
    DragOver:當(dāng)拖動(dòng)操作在ListBox控件上進(jìn)行時(shí)觸發(fā)(可選,用于提供視覺反饋)。
    可以通過在設(shè)計(jì)器中雙擊ListBox控件,自動(dòng)創(chuàng)建這些事件處理程序的骨架代碼。

  • 在DragEnter事件處理程序中,將拖動(dòng)操作的效果設(shè)置為拷貝(Copy)。這樣當(dāng)拖動(dòng)文件夾時(shí),鼠標(biāo)指針將顯示一個(gè)"+"符號,表示可以拷貝。

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);
            }
        }
    }
}

這段代碼將遍歷拖放的文件夾路徑數(shù)組,并將每個(gè)存在的文件夾路徑添加到ListBox中。

6.可選:在DragOver事件處理程序中提供視覺反饋,比如更改鼠標(biāo)指針的外觀。

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

這段代碼將在拖動(dòng)操作在ListBox上進(jìn)行時(shí),將鼠標(biāo)指針的效果設(shè)置為拷貝。

現(xiàn)在我們的的WinForms窗口上的ListBox組件應(yīng)該可以接收系統(tǒng)中的文件夾的拖放操作,并將選中文件夾的路徑記錄并顯示在ListBox中。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多