Windowsのコントロールがドラッグアンドドロップコンテンツを実装するフォーム(ドラッグアンドドロップ)機能

他のコントロールの上にまず、制御内容

  開発プロセスでは、多くの場合、別のを制御するために、そのような要件、ドラッグコントロールがデータを持っています。例えば、前記リストボックス内の別のへのデータリストボックス。ツリービュー内のノードへまたはドラッグDataGridViewのデータ。  

  アプリケーションでは、このようなWindowsアプリケーションの操作のドラッグアンドドロップを実装するためのDragEnter、DragLeaveとドラッグアンドドロップイベントなどのイベント、の一連の処理によって。これらのイベントパラメータに関する入手可能な情報を使用することで、簡単にドラッグアンドドロップすることができます。

  ドラッグ続いて、ターゲットに影響をドロップ、ドラッグアンドドロップ操作は、最初にドラッグを開始し、制御上のMouseDownイベントの応答コードを達成するために、操作を削除し、必要なデータをドラッグすることで、三の段階を経てコードであり、DoDragDrop関数()メソッドを呼び出しますDragEnterイベント応答コードを追加し、DragDropEffects列挙型コピーを使用するか、またはコントロールのドラッグ効果を移動するように、最後の操作は、データを配置することで、制御対象にデータを追加するために、ターゲット上のDragDrop応答制御コードを追加します。

プライベート ボイド Form1_Load(オブジェクト送信者、System.EventArgs e)の
{ 
    この .listBox1.AllowDrop = ;
    この .listBox2.AllowDrop = ;
    この .listBox1.Items.Add(" A " );
    この .listBox1.Items.Add(" B " );
    この .listBox1.Items.Add(" C " ); 
} 

プライベート ボイド listBox1_MouseDown(オブジェクト送信者、System.Windows.Forms.MouseEventArgs E)
{ 
    この.listBox1.DoDragDrop(この .listBox1.Items [ この.listBox1.SelectedIndex]、DragDropEffects.Move)。
} 

プライベート ボイド listBox2_DragEnter(オブジェクト送信者、System.Windows.Forms.DragEventArgs E)
{ 
    場合(e.Data.GetDataPresent(DataFormats.Text))
    { 
        e.Effect = DragDropEffects.Move。
    } 
} 

プライベート ボイド listBox2_DragDrop(オブジェクト送信者、System.Windows.Forms.DragEventArgs E)
{ 
    この.listBox2.Items.Add(e.Data.GetData(DataFormats.Text))。
    この.listBox1.Items.Remove(e.Data.GetData(DataFormats.Text))。
}

第二に、ドキュメントのパスへのアクセスを制御するためにファイルをドラッグ

  ドラッグ&ユーザーエクスペリエンスが良好であることを、あなたのプログラムにファイルやディレクトリを削除します。

  (のSystem.Array)e.Data.GetData(DataFormats.FileDrop):コードのパス上にドラッグを取得します。

  次に、これらのパスをコピーして貼り付けることができます。

公共 部分 クラスをForm1:フォーム
{ 
    公共のForm1()
    { 
        のInitializeComponent(); 
    } 

    プライベート ボイド Form1_Load(オブジェクト送信者、のEventArgs電子)
    { 
        SetCtrlDrag.SetCtrlDragEvent(この.textBox1)。
    } 
} 

パブリック クラスSetCtrlDrag 
{ 
    パブリック 静的 ボイドSetCtrlDragEvent(コントロールCTRL)
    { 
        場合(CTRLは、あるテキストボックス)
        { 
            テキストボックスTB = CTRL としてテキストボックス; 
            tb.AllowDrop = trueに
            tb.DragEnter + =(SENDER、E)=> 
            { 
                e.Effect = DragDropEffects.Link; // アイコンドラッグ
                 }。

            tb.DragDrop + =(送信者、E)=> 
            { 
                ((テキストボックス)送信者)の.text =((のSystem.Array)e.Data.GetData(DataFormats.FileDrop))GetValueメソッド(0 ).ToString(); 
            }。
        } 
    } 
}

界面効果

TestFilePathDrag

第三に、説明書

MSDN:http://msdn.microsoft.com/zh-cn/library/system.windows.forms.dragdropeffects.aspx

1。方法

効果をドラッグ&ドロップすると、C#が抗力を実現するための系統的な方法DoDragDrop関数の方法を提供し、ドロップ操作コントロールがコントロールクラスから派生しているので、開発者が任意にすることができ、直接的または間接的に、コントロールクラスによって定義され、始めこの方法は、視覚化コンポーネントをDoDragDrop関数を呼び出します。DoDragDrop関数の方法は、次の構文を使用します。

公共 DragDropEffects DoDragDrop関数(オブジェクトデータ、DragDropEffects allowedEffects)

  データ:データ内容をドラッグするユーザー。コンテンツをドラッグするために、この方法の位置の最初の引数に渡す必要があります。

  allowedEffects:つDragDropEffects列挙された値は、このタイプの効果は、ドラッグ操作を含みます。DragDropEffects列挙値を表32.8に示します。

  DragDropEffects枚举值:

  •     すべての:データが削除され、ドラッグソースからコピーして、ドロップターゲットにスクロール
  •     コピー:ドロップターゲットにデータをコピー
  •     リンク:ドラッグリンクドロップターゲットへのデータソース
  •     移動:ドロップターゲットにモバイルデータソースをドラッグします
  •     なし:ドロップターゲットはデータを受け付けません。
  •     ドロップターゲットに転がり始めることについて、または現在ローリングさ:スクロール

  現像DoDragDrop関数法を用いる場合、テーブルの任意のメンバーをallowedEffectsパラメータを指定しなければならない。また、ビット演算子が所望のドラッグ効果を与えるために、渡されたパラメータの完全なセットとして、部材のいずれかに記載の使用することができます次のようにキーコードを達成するためには、次のとおりです。

DragDropEffects.Copy | DragDropEffects.None

2。イベント

  C#がドラッグを提供し、より良い結果を達成するために、ドラッグアンドドロップの方法と組み合わせて使用​​されるイベント・システムを、ドロップ。表1に示すような従来のドラッグイベント。

ターゲット上のイベント:

  •     DragEnterイベント:ユーザーがドラッグして、コントロール上にマウスカーソルの際に初めて操作をドロップすると、イベントをリードします
  •     DragOver DragOverは:マウスが移動した場合も同様の制御、イベントトリガー内に留まるDragOver DragOverは
  •     ドラッグアンドドロップ:ドラッグ操作が完了したときに発生します
  •     DragLeave:ユーザがウィンドウの外に移動した場合、イベントがDragLeaveをトリガー

ソース上のイベント:

  •     GiveFeedback:ドラッグ操作中に発生
  •     QueryContinueDrag:キーボードまたはマウスボタンの状態の変化がQueryContinueDragイベントにつながるドラッグ&ドロップ動作中。QueryContinueDragイベントは、ドロップ操作をキャンセルすべきかどうかを決定するために、ドラッグソースを可能にします

おすすめ

転載: www.cnblogs.com/springsnow/p/11586293.html
おすすめ