Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

ドラッグ&ドロップで操作できるシフト表作成WPFアプリケーションを作る

ComponentOne Studioを活用したWindowsフォームアプリケーションの作成

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2013/12/25 14:00
目次

C1DragDropManagerコンポーネントの概要

 前述したとおり、DragDropManager for WPFのC1DragDropManagerコンポーネントは、WPFアプリケーションにドラッグ&ドロップ操作機能を簡単に追加できるコンポーネントです。

 ドラッグ&ドロップサービスを提供するクラスなので、ウィンドウに表示されず機能の提供だけを行います。

 C1DragDropManagerクラスは、Windowsフォームのドラッグ&ドロップ実装のパターンに従い、ドラッグ&ドロップ操作を開始するために呼び出されるDoDragDropメソッドを提供し、プロセス全体をカスタマイズするためのイベント(DragStart、DragEnter、DragOver、DragLeave、DragDrop)を発生させます。

 このイベントのパラメータには、ドラッグされる項目(e.DragSource)やドロップされる場所(e.DropTarget)に関する情報が格納されます。

 C1DragDropManagerクラスには、プロセス全体を簡略化する2つのヘルパーメソッドがあります。それは、RegisterDragSourceとRegisterDropTargetです。これらのメソッドは、ほとんどの一般的なドラッグ&ドロップのシナリオを少ないコードで記述できる機能を提供します。これらのメソッドで要素をソースやターゲットとして登録すると、C1DragDropManagerは、マウスを監視し、ドラッグ&ドロップ操作を管理します。

 そのため、プログラマに必要な作業は移動またはコピーの操作を実行するためにDragDropイベントを処理するだけです。

C1DragDropManagerコンポーネントの特徴

 このC1DragDropManagerコンポーネントは、次のような特徴を持っています。

ドラッグ&ドロップ動作の制御

 C1DragDropManagerコンポーネントには、ドラッグ&ドロップ処理全体を制御できるさまざまなメソッドやイベントが用意されています。いくつかの要素をドラッグ元およびドロップ先として登録してから、要素を新しい場所に移動またはコピーするためにDragDropイベントを処理するだけで、アプリケーションにドラッグ&ドロップ機能を実装できます。

ドラッグマーカーのカスタマイズ

 C1DragDropManagerコンポーネントは、ドラッグ元とドロップ先のドラッグマーカーの外観をカスタマイズするためのプロパティを公開します。これにより、操作全体が見栄えよく、ユーザーフレンドリーになります。

スクロールのサポート

 スクロール可能なターゲットの端の近くにオブジェクトをドラッグすると、ターゲットが自動的にスクロールされるので、エンドユーザーは、要素を1回の操作で目的の場所にドロップできます。

C1DragDropManagerクラスのメンバ

 C1DragDropManagerコンポーネントを使ってドラッグ&ドロップ機能を実装するには、C1DragDropManagerクラスの以下の主要なメンバとイベントを使用します。

メンバプロパティ
プロパティ 説明
AutoScroll C1DragDropManagerコンポーネントがドロップ先を含むScrollViewerを
自動的にスクロールするかどうかを取得または設定
AutoScrollDelay 自動スクロールステップの時間間隔をミリ秒単位で取得または設定
AutoScrollEdge マウスがドラッグ先要素の端にどの距離まで近付いたら
自動スクロール処理を開始するかを取得または設定
AutoScrollStep 自動スクロールステップごとにスクロールするピクセル数を取得または設定
Canvas ドラッグ&ドロップ処理の表示に使用されるキャンバスへの参照を取得
DragThreshold マウスがどれだけ移動したらドラッグ操作を開始するかを
ピクセル単位の距離で取得または設定
SourceMarker ドラッグ元の強調表示に使用される境界線への参照を取得
TargetMarker ドロップ場所を示すために使用される境界線を取得
メンバメソッド
メソッド 説明
ClearSources 登録されているすべてのドラッグ元を削除
ClearTargets 登録されているすべてのドロップ先を削除
DoDragDrop UIElementをドラッグ元として使用するドラッグ&ドロップ操作を開始し、
指定されたDragDropEffectをサポート
RegisterDragSource ドラッグ元として機能するUIElementを登録
RegisterDropTarget 要素をドロップ先として登録(または登録解除)
イベント
イベント 説明
DragAutoScroll ドロップ場所をビュー内に留めておくためにC1DragDropManagerコンポーネントがScrollViewerを自動的にスクロールした後で発生
DragDrop ドラッグ&ドロップ処理の最後に、ユーザーが登録されたドロップ先上でマウスボタンを放したときに発生
DragEnter ドラッグ&ドロップ処理中に、ポインタが登録されたドロップ先に入ったときに発生
DragLeave ドラッグ&ドロップ処理中に、ポインタが登録されたドロップ先から出たときに発生
DragOver ドラッグ&ドロップ処理中に、ポインタが登録されたドロップ先上に移動したときに発生
DragStart ドラッグ&ドロップ処理が開始されたときに発生

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 瀬戸 遥(セト ハルカ)

    8ビットコンピュータの時代からBASICを使い、C言語を独習で学びWindows 3.1のフリーソフトを作成、NiftyServeのフォーラムなどで配布。Excel VBAとVisual Basic関連の解説書を中心に現在まで40冊以上の書籍を出版。近著に、「ExcelユーザーのためのAccess再...

バックナンバー

連載:ComponentZine(ComponentOne Studio)

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5