できない場合は、2つのTreeViewコントロールを使用することもできます。私は、2番目のTreeViewコントロールに階層を持たないだけです。それはある種のリポジトリのように動作します。ListViewからWinformsのTreeViewにドラッグアンドドロップすることはできますか?
コードサンプルまたはチュートリアルは非常に役に立ちます。
できない場合は、2つのTreeViewコントロールを使用することもできます。私は、2番目のTreeViewコントロールに階層を持たないだけです。それはある種のリポジトリのように動作します。ListViewからWinformsのTreeViewにドラッグアンドドロップすることはできますか?
コードサンプルまたはチュートリアルは非常に役に立ちます。
ListView
は自然にドラッグ&ドロップをサポートしていませんが、コードの小さなビットでそれを有効にすることができます。
ここhttp://support.microsoft.com/kb/822483
が、具体的ListView
からドラッグ&ドロップを行う例ですTreeView
に(それはエキスパートセックス変更リンクですので、ほんの数秒待ってから、あなたが答えを見つけることができます下にスクロール):
http://www.experts-exchange.com/Programming/Languages/.NET/Visual_CSharp/Q_22675010.html
更新:リンクからコード:
private void listView1_ItemDrag(object sender, ItemDragEventArgs e)
{
listView1.DoDragDrop(listView1.SelectedItems, DragDropEffects.Copy);
}
にItemDragイベントを作成「ドロップ」オブジェクトにコピーされます。 さて、ツリービュー上のDragEnterイベントを作成します。
private void tvMain_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.Copy;
}
これは簡単でした。今、難しい部分が始まります。
を次のコードは、ツリービュー上のDragDropイベントを作成し、既存のノード(!あなたはすでにあなたのツリービューまたは例の少なくとも1つのノードが失敗していることを確認してください)に選択(およびドラッグ)リストビューの項目が追加されます
private void tvMain_DragDrop(object sender, DragEventArgs e)
{
TreeNode n;
if (e.Data.GetDataPresent("System.Windows.Forms.ListView+SelectedListViewItemCollection", false))
{
Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
TreeNode dn = ((TreeView)sender).GetNodeAt(pt);
ListView.SelectedListViewItemCollection lvi = (ListView.SelectedListViewItemCollection)e.Data.GetData("System.Windows.Forms.ListView+SelectedListViewItemCollection");
foreach (ListViewItem item in lvi)
{
n = new TreeNode(item.Text);
n.Tag = item;
dn.Nodes.Add((TreeNode)n.Clone());
dn.Expand();
n.Remove();
}
}
}
は、ドラッグ中にカーソルを変更するには、ListViewコントロールのためのGiveFeedbackイベントを作成する必要があります。
private void listView1_GiveFeedback(object sender, GiveFeedbackEventArgs e)
{
e.UseDefaultCursors = false;
if (e.Effect == DragDropEffects.Copy)
{
Cursor.Current = new Cursor(@"myfile.ico");
}
}
myfile.ico
は、.exeファイルと同じディレクトリにある必要があります。
これは単なる例です。あなたは好きなようにそれを拡張することができます。
ありがとうございます。しかし、1つのコントロールから別のコントロールにドラッグするのはどうですか? –
例で更新されました。 – MusiGenesis
ありがとうございました、エキスパートの性転換に関する良い話題:O –