前回作成した付箋紙ソフトは付箋のサイズを変更することができませんでした。今回はサイズ変更に対応させます。簡単にするために付箋状態になったオブジェクトのサイズ変更は下、右、右下方向のみに変更することができる仕様にします。

マウスキャプチャされていない状態でマウスが移動したときはサイズ変更可能な位置にマウスポインタがあるかどうかを調べます。

マウスが境界線の上にあるときはマウスカーソルの形状を変更し、サイズ変更が可能であることがわかるようにします。

これがじっさいにサイズ変更可能であるかどうかを判定するメソッドです。

そしてサイズ変更可能な位置でマウスボタンが押されたときはサイズ変更のための処理をおこないます。

isSizeChanging フラグがtrueになるとイベントハンドラForm2_MouseMoveのなかでSizeChangeFormメソッドが呼ばれます。このメソッドはサイズを変更するためのものです。

ドラッグが終わったらマウスキャプチャが解除されますが、そのときにサイズ変更のためのフラグをもとに戻します。

ほかにも考えないといけないことがあります。付箋をつくるたびにそれがタスクバーに表示されると使いにくくなるのでそうならないようにForm2.ShowInTaskbarプロパティは falseにします。またこの場合、最小化してしまうともとに戻せないので最小化ボタンを無効にします。

SizeChangeForm(int x, int y)メソッドではサイズをゼロにすることもできます。これではもとに戻せなくなるのでMinimumSizeも Size(200, 60)くらいを指定したほうがよいと思います。

そこでコンストラクタは以下のようにしました。

それから付箋紙状態と文章編集のときのフォームのサイズでは適切なサイズが違います。そこで付箋紙状態とフォームの状態のそれぞれのサイズを記憶しておき、状態が変化するときは記憶しておいたサイズに変更されるようにします。