2009-06-12 40 views
3

我有一個具有2個分割器的表單。 一個分路器將窗體水平分割成2列。 另一個將左列分成2行。使用樹視圖和分割控件在Winforms中實現拖放

在左側欄中,頂部「行」我有一個樹形視圖。 在右欄中,我有一個圖像查看器。

我想放下一個treeview節點到圖像查看器上,並用它做一些事情。

查看器被稱爲「查看器」。樹形視圖被稱爲「EntityTreeView」

的代碼如下:

private void viewer_DragEnter(object sender, DragEventArgs e) 
    { 
     e.Effect = DragDropEffects.Move; 
    } 

    private void viewer_DragDrop(object sender, DragEventArgs e) 
    { 
     TreeNode droppedNode; 
     droppedNode = (TreeNode)e.Data.GetData("System.Windows.Forms.TreeNode"); 
     MessageBox.Show(String.Format("You dropped a node with text: {0}\n on the viewer at X:{1} Y:{2}", droppedNode.Text, e.X, e.Y), "Drag Drop Finished", MessageBoxButtons.OK, MessageBoxIcon.Information); 
    } 

    private void EntityTreeView_ItemDrag(object sender, ItemDragEventArgs e) 
    { 
     DoDragDrop(e.Item, DragDropEffects.Move); 

    } 

    private void EntityTreeView_DragDrop(object sender, DragEventArgs e) 
    { 
     e.Effect = DragDropEffects.Move; 
    } 


    private void EntityTreeView_DragEnter(object sender, DragEventArgs e) 
    { 
     e.Effect = DragDropEffects.None; 
    } 

但是,每當我搶一個TreeView節點,並開始拖動它,它會立即顯示「無」圖標(即無吸菸標誌..用斜線圈起來,不管那叫什麼)。

任何想法我做錯了什麼?

在此先感謝您的幫助。

+0

對於所有相關控件,您是否將AllowDrop屬性設置爲true? – NascarEd 2009-06-12 14:04:16

回答

4

您的代碼看起來不錯迄今。您需要做的是將「查看器」上的AllowDrop屬性設置爲true

+0

謝謝。這是問題,我不知道我是如何忽略它的。 – mgerety 2009-06-12 17:54:14

0

您需要設置e.Effect在DragEnter事件來DragDropEffects.Move

private void EntityTreeView_DragEnter(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Move  
}