2012-04-18 3 views
1

VS 2008を使用する2つのリストビュー(ListView1とListView2と呼ぶ)を持つWindowsフォームがあります。 ListView1には、ディレクトリのFileNamesが設定されています。アイテムがListView1からListView2にドラッグされると、実行されるコードがいくつかあります。 ListView2からListView1にドラッグすると、いくつかのコードが実行されます。リストビュー、ドラッグアンドドロップ、ソースリストビューが必要なWindowsフォーム

private void view_DragDrop(object dropTarget, DragEventArgs e)

私のようないくつかの項目を試してみました:私は何をしたいあなたはここでそれ自体にListView2から

をドラッグアンドドロップすると、ドロップした後に呼び出されるdragDropの各メソッドの場合は、コードを実行ではありません以下の下:

ListView data = (ListView)e.Data.GetData("System.Windows.Forms.ListView")

これは、私は、データが= DropTargetが、実行していないかどうかを確認している以上にやりたいnullを返します。

答えて

0

フォームの範囲で「E.OriginalSource」.'System.Windows.Forms.DragEventArgsため

object dfrom; 
//your methods ect 
    private void view_ItemDrag(Object sender, System.Windows.Forms.ItemDragEventArgs e) 
    //your code to drag items 
    dfrom = sender 
} 
private void view_DragDrop(object dropTarget, System.Windows.Forms.DragEventArgs e) 
{ 
    if (dfrom == sender){return;}//this will protect both list boxes (assuming you can drag from both). 
    //Your code 
} 
+0

これは素晴らしい、感謝しました!! – DanO

1

属性を使用すると、イベントの送信元を確認し、ターゲットが同じでないことを確認できます。

だからあなたListView2上ごDragDropイベントで、私はこのような何かしたい:これはListView2であなたのコードの実行をトリガするためにListView2からドラッグしてしまったすべてのアイテムを防ぐことができます

private void view_DragDrop(object dropTarget, DragEventArgs e) 
{ 
    if (e.OriginalSource == ListView2) 
     return; 

    //Rest of the code here 
} 

を。

DragEventArgs Class on MSDN

+0

メッセージの定義が含まれていません '、あなたの変数を作成OriginalSource 'で、' System.Windows.Forms.DragEventArgs '型の最初の引数を受け入れる拡張メソッド' OriginalSource 'は見つかりませんでした(usingディレクティブまたはアセンブリ参照はありませんか?) – DanO

関連する問題