1
我有兩個TreeView
這是在不同的形式。Treeview拖放沒有目標節點
treeView1
treeView2
我實現了一個Drag and Drop
功能,這樣我可以從樹上拖動到另一個和它正常工作與我發現here,我要處理3個事件的代碼。
的事情是我的窗戶的設置是這樣的:
正如你所看到的,Window2
隱藏我的Window1
和它的目的和需要保持這樣的。問題是我的Drag and Drop
是從Window2
到Window1
所以我不能指定一個目標節點。有沒有辦法簡單地放入TreeView
沒有任何目標節點,並說創建一個父節點旁邊的其他人?
鏈接死的例子並不:既forms
的
private void Form1_Load(object sender, System.EventArgs e)
{
this.treeView1.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);
this.treeView2.ItemDrag += new System.Windows.Forms.ItemDragEventHandler(this.treeView_ItemDrag);
this.treeView1.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);
this.treeView2.DragEnter += new System.Windows.Forms.DragEventHandler(this.treeView_DragEnter);
this.treeView1.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);
this.treeView2.DragDrop += new System.Windows.Forms.DragEventHandler(this.treeView_DragDrop);
}
private void treeView_ItemDrag(object sender,
System.Windows.Forms.ItemDragEventArgs e)
{
DoDragDrop(e.Item, DragDropEffects.Move);
}
private void treeView_DragEnter(object sender,
System.Windows.Forms.DragEventArgs e)
{
e.Effect = DragDropEffects.Move;
}
private void treeView_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
TreeNode NewNode;
if(e.Data.GetDataPresent("System.Windows.Forms.TreeNode", false))
{
Point pt = ((TreeView)sender).PointToClient(new Point(e.X, e.Y));
TreeNode DestinationNode = ((TreeView)sender).GetNodeAt(pt);
NewNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode");
if(DestinationNode.TreeView != NewNode.TreeView)
{
DestinationNode.Nodes.Add((TreeNode) NewNode.Clone());
DestinationNode.Expand();
//Remove Original Node
NewNode.Remove();
}
}
}
如果無法看到目標樹視圖,你怎麼能調用它是一滴?而是使用右鍵單擊菜單? – Bolu
將它放在窗口1上,然後讓它處理TreeView1。這是否是世界上最不直觀的界面競爭? –
@Bolu我很抱歉我的錯誤。樹形視圖在底部可見。我唯一看不見的是treeview1中的樹節點,這就是爲什麼我不能選擇一個目標節點。 – phadaphunk