3

我创建了一个具有单列的绑定 DataGridView。我希望能够将文件拖放到 DataGridView 上,并且只将文件名(路径和名称)存储到列的单元格中。我一直在做研究,这样做的方法是使用事件 DragDrop 和 DragEnter 并尝试了几种不同的方法,但都没有奏效。有谁知道如何做到这一点?

我的代码:

   private void PlaylistDataGridDragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
            e.Effect = DragDropEffects.All;
        else
            e.Effect = DragDropEffects.None;
    }

    private void PlaylistDataGridDragDrop(object sender, DragEventArgs e)
    {      
        if (e.Data.GetDataPresent(DataFormats.FileDrop))
        {
            var files = (string[])e.Data.GetData(DataFormats.FileDrop);
            foreach (var filePath in files)
            {
                var a = (DataRowView) PlaylistBindingSource.AddNew();
                a.BeginEdit();
                a[0] = filePath;
                a.EndEdit();
            }
        }
    }
4

1 回答 1

3

你需要像你说的那样实现DragEnterDragDrop事件。是一篇关于如何做到这一点的好文章。您在我输入时添加了代码。您只需要调整将项目添加到 DataGridView 的方式。您需要添加一个新行,然后处理最后一行:

PlaylistDataGrid.Rows.Add();
PlayListDataGrid[0,PlaylistDataGrid.RowCount-1].Value = filePath

这假定您要将数据放在 DataGridView 的第一列中。

于 2012-06-21T18:21:31.673 回答