*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*

<C#>

ピクチャボックスをドラッグ&ドロップ <目次>

*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*=*


「<C#> ピクチャボックスをドラッグ&ドロップ」

における総合目次です。





 --- --- --- --- --- --- --- --- ---

はじめに

 --- --- --- --- --- --- --- --- ---


ピクチャボックスコントロール(pictureBox)をドラッグ&ドロップを行なう方法について説明します。

ところで、ドラッグ&ドロップを行なうプログラムを作る際は、マウスボタン押下のイベント(MouseDownイベント)と、マウスボタン上昇のイベント(MouseUpイベント)だけで、単純に作れるような気もします。

しかし、実際にやってみると、そう簡単には行かないようです。

ただし、いったん やり方がわかれば、そう難しいものではないので、ここでサンプルプログラムを紹介します。
なお、一連のサンプルを、順番にステップアップして行く形で紹介して行きます。

 

 

 

 

総合の目次

 

本ページを含めた関連事項の総合目次です。

 

<C#> ゲームキャラクター画像等の画像操作関連における総合ページ <目次>

http://note.chiebukuro.yahoo.co.jp/detail/n16898

 

 

 

 

====================================

目次

====================================


「<C#> ピクチャボックスをドラッグ&ドロップ」

における目次です。



 



 

 --- --- --- --- --- --- --- --- ---

基本サンプル

 --- --- --- --- --- --- --- --- ---


ドラッグ&ドロップのサンプルでは、いろいろな設定をする処理があって、少しソースコードがごちゃごちゃしています。
よって、ドラッグ&ドロップ関連の最初のサンプルは、極力単純なものにして、少しでも理解しやすいサンプルにしたいです。
つきましては、ここでのサンプルは、ドラッグ対象の行は、1個のみとします(複数行指定は、行なわない)。
また、ドラッグ&ドロップによる処理は、複写(コピー)のみで、移動は行なわないものとします。

なお、その最初のシンプルなサンプルとしては、ドラッグ対象行の選択方法が3種類あります。
よって、「最初のシンプル」と言いながら、3個のサンプルを用意しています。






--------------
 

 

PictureBoxをドラッグ&ドロップして移動

 

PictureBoxをドラッグ&ドロップすると、PictureBoxが、ドラッグ元の位置からドロップ先の位置に移動します。

 

http://note.chiebukuro.yahoo.co.jp/detail/n235578

 

 

 

PictureBoxをドラッグ&ドロップして複写

 

複写(コピー)の場合は、ドロップ先にコピーされたPictureBoxを新規生成する必要があります。
よって、ここでの一連のサンプル(基本サンプル)では、無理です。
ここでの一連のサンプルでは、デザイン画面でPictureBoxをフォームに貼り付けているからです。
すなわち、ソースコード上の条件で、PictureBoxを新規に追加するものではないです。
よって、後のコレクションでのドラッグ&ドロップのサンプルで、複写のサンプルを設けます。
コレクションならば、PictureBoxの追加が自由に行なえます。

 

 

 ---> 複写のサンプルは、コレクション関連の章で設けます。



 

 

ドラッグ開始時のクリック処理とドラッグ&ドロップ処理との識別

 

今までのサンプルでは、ドラッグ開始時、すなわち、マウスボタン押下時に、ドラッグ&ドロップ処理を開始するものとして来ました。
しかし、実際にマウスボタン押下した時は、必ずドラッグ&ドロップ処理を開始するものとは限りません。
クリック時に行なう処理を定義している場合もあります。
よって、マウスボタン押下時に、クリックなのか、ドラッグ&ドロップの開始なのか、判断する処理を定義します。
本サンプルでは、ドラッグ操作が開始されない範囲を示すSystemInformation.DragSize プロパティを活用して、その判断処理を行ないます。

 

http://note.chiebukuro.yahoo.co.jp/detail/n235579



 

 --- --- --- --- --- --- --- --- ---

PictureBoxコレクションをドラッグ&ドロップ

 --- --- --- --- --- --- --- --- ---


PictureBoxをコレクション化したのもに対して、ドラッグ&ドロップを行なうサンプルです。


 

<注記>

なお、「はじめに」では、

「いったん やり方がわかれば、そう難しいものではない」

と述べました。

しかし、それは、前章の基本サンプルまでです。

本章では、PictureBoxをコレクション化するので、人によっては、難しく感じる人もいると思います。

PictureBoxだけに限らず、既存のコントロールをコレクション化すると、イベントの扱いが面倒になるからです。

しかし、該当コントロール(今回の場合PictureBox)の派生クラスを作って、自分でイベントを定義し直してしまえば、特に問題はないです。

すなわち、該当コントロールの派生クラスを作ったことが無い人は、難しく感じる人もいると思います。

しかし、その場合は、こう言うものだと、割り切って下さい。

この手のことを慣れてしまえば、やはり、そう難しいものではないです。




--------------
 

 

 

 

 

-- -- -- -- -- -- -- -- -- -- -- --

       コントロールのList化、及び、

      コレクションのイベントの取り扱い

-- -- -- -- -- -- -- -- -- -- -- --

 

PictureBoxコレクションをドラッグ&ドロップするサンプル(本題)に入る前に、PictureBoxをコレクション化します。


 

 

コントロールのイベントにおける情報の取り扱い <目次>

 

http://note.chiebukuro.yahoo.co.jp/detail/n231146 

 

 

 

 

-- -- -- -- -- -- -- -- -- -- -- --

       コレクションをドラッグ&ドロップ(本編)

-- -- -- -- -- -- -- -- -- -- -- --

 

 


PictureBoxをドラッグ&ドロップすることにおいて、複写と移動の両者対応にする場合

 

PictureBoxをドラッグ&ドロップすることにおいて、複写と移動の両者対応にさせます。
なお、複写を対応させるには、PictureBoxを新規生成して追加して行く仕組みが必要です。
よって、本サンプルでは、PictureBoxをリスト化(コレクション化)します。

 

http://note.chiebukuro.yahoo.co.jp/detail/n235580


 

 

PictureBoxのドラッグ&ドロップにおいて、フォーム間をまたがって、ドラッグ&ドロップをする

 

PictureBoxのドラッグ&ドロップにおいて、フォーム間をまたがって、ドラッグ&ドロップをします。

 

http://note.chiebukuro.yahoo.co.jp/detail/n236018