2009-06-12 20 views
3

Ich habe ein Formular, das 2 Splitter hat. Ein Splitter teilt die Form horizontal in 2 Spalten auf. Der andere teilt die linke Spalte in 2 Zeilen auf.Implementieren Drag-Drop in Winforms mit Treeview & Split Steuerelemente

In der linken Spalte oben "Zeile" habe ich eine Baumansicht. In der rechten Spalte habe ich einen Bildbetrachter.

Ich möchte einen Treeview-Knoten auf den Bildbetrachter legen und etwas damit machen.

Der Betrachter wird "Viewer" genannt. Die treeview ist „EntityTreeView“ genannt

Der Code ist wie folgt:

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; 
    } 

Jedes Mal, wenn ich einen TreeView-Knoten greifen und starten Sie ihn ziehen, es zeigt sofort den „Nein“ -Symbol (dh die keine Rauchen Zeichen .. Kreis mit einem Schrägstrich, was auch immer das genannt wird).

Irgendeine Idee, was ich falsch mache?

Vielen Dank im Voraus für jede Hilfe.

+0

Haben Sie die AllowDrop-Eigenschaft für alle relevanten Steuerelemente auf True festgelegt? – NascarEd

Antwort

4

Ihr Code sieht gut aus so weit DragDropEffects.Move. Was Sie tun müssen, ist die AllowDrop Eigenschaft auf "Viewer" auf True.

+0

Danke. Das war das Problem, ich weiß nicht, wie ich es übersehen habe. – mgerety

0

Sie müssen die e.Effect im Dragenter-Ereignis setzen

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