2009-06-12 16 views
3

私は2つのスプリッターを持つフォームを持っています。 1つのスプリッタはフォームを水平に2つの列に分割します。 もう1つは、左の列を2行に分割します。ツリービューと分割コントロールを使用してWinformsでドラッグドロップを実装

左側の列の上の「行」にはツリービューがあります。 右の列には、イメージビューアがあります。

ツリービューノードをイメージビューアにドロップして、それに何かしたいと思います。

このビューアは「ビューア」と呼ばれます。ツリービューは、コード

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

しかし、それはすぐに「いいえ」アイコン(すなわち、なしを示し喫煙のサイン..スラッシュのある円、それが何であれ)。

私が間違っていることを知っていますか?

ご協力いただきありがとうございます。

+0

関連するすべてのコントロールでAllowDropプロパティをtrueに設定していますか? – NascarEd

答えて

4

あなたのコードは、これまで正常に見えるDragDropEffects.MoveするDragEnterイベントにe.Effectを設定する必要があります。あなたがする必要があるのは、"ビューア"のAllowDropプロパティを,に設定することです。

+0

ありがとうございます。これは問題でした、私はそれを見落としたか分かりません。 – mgerety

0

あなたは

private void EntityTreeView_DragEnter(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Move  
} 
関連する問題