SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

ComponentZine(ComponentOne)

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

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

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

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 ドラッグ&ドロップ処理が開始されたときに発生

次のページ
GUIの作成

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
ComponentZine(ComponentOne)連載記事一覧

もっと読む

この記事の著者

瀬戸 遥(セト ハルカ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/7560 2013/12/25 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング