小さなファイルエクスプローラーアプリケーション[WINFORMS]があり、ListViewControlを使用してアイテムを探索しています。
したがって、listViewには、現在のアドレス[ローカルコンピューターから]のファイルとフォルダーが表示されます。
ファイル/フォルダを同じアドレスの別のフォルダに簡単に移動/コピーできるようにするには、ドラッグアンドドロップ機能を有効にする必要があります。各アイテムにはいくつかの特性があります。
"13.45 MB"
フォルダの場合はstring.Empty
[ただし、ファイルかフォルダかを知る方法はいくつかあります]になります。
リストビューでドラッグアンドドロップを使用する方法について多くのチュートリアルを見てきましたが、Windowsファイルエクスプローラーからリストビューへ、またはリストビューから別のリストビューへのようなものでしたが、私の場合、同じリストビューでドラッグアンドドロップする方法を知る必要があります。
ListViewのAllowDropプロパティを有効にしました。また、次の機能をアクティブにしました。
private void listView1_DragDrop(object sender, DragEventArgs e)
{
}
private void listView1_DragEnter(object sender, DragEventArgs e)
{
}
private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
}
アップデート:
私はこれを使おうとしました:
private void listView1_DragDrop(object sender, DragEventArgs e)
{
ListViewItem item = (ListViewItem)e.Data.GetData(typeof(ListViewItem)); //this should be the target item (FOLDER)
StringBuilder s = new StringBuilder();
foreach (ListViewItem i in listView1.SelectedItems)
{
s.AppendLine(i.Text);
}
MessageBox.Show("DRAGGED ITEM : " + s.ToString() + "TARGET ITEM : " + item.Text);
}
private void listView1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
private void listView1_MouseDown(object sender, MouseEventArgs e)
{
var item = listView1.GetItemAt(e.X, e.Y);
if (item != null)
{
listView1.DoDragDrop(item, DragDropEffects.Copy);
}
}
マウスが指すアイテムを取得しlistView1_MouseDown
ましたが、ドラッグしたアイテムをドロップする前にアイテムが表示されるため、「SWImg」という名前のフォルダーを「ODDFiles」フォルダーにドラッグすると、messageBoxに次のように表示されます。"SWImg - SWImg"
それから私はに置き換えlistView1_MouseDown
ましたlistView1_ItemDrag
:
private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
if (e.Item != null)
{
listView1.DoDragDrop(e.Item, DragDropEffects.Copy);
}
}
同じ結果:S。