lycheejam's tech log

チラ裏のメモ帳 | プログラミングは苦手、インフラが得意なつもり。

C#でドラッグ&ドロップ(コントロールの移動)

概要

Form内のコントロールをドラッグ&ドロップで移動させるプログラム

ドラッグ&ドロップでファイルパスを取得するプログラムはこちら
kitigai.hatenablog.com

ソース

github.com

drag時点での座標を取得しMoveイベントで座標の移動量を計算してます。

コントロールをFormからはみ出させない

formからPicturBoxがはみ出さないようにしました。

if (x >= this.width - PicturBox1.width)

上記の計算だとFormのフレーム部分もサイズに入ってしまうので
移動させているコントロールを端まで移動させると見切れてしまいます。
※System.Drawing.Pointで取得してる座標は左上端なのでpicturboxの分引いてます。

if (x >= this.ClientSize.Width - PicturBox1.Width)

ClientSizeでFormのフレームを除いたサイズを取得します。

もうひと工夫

ほんとはdrag中にちゃんとエフェクトがかかったりしてドラッグしてるって
わかるようにできれば最高だった。
やってる途中に晩飯呼ばれてどーでも良くなったのでこれ以上触らない。

雑感

あるアイデアが浮かんで別に実用性もないし自分も使わないけど
やっぱ自分の手でもの作るって楽しいんで
作ってる途中の勉強をアウトプットしてみようかなって感じです。

応用情報の勉強しろって感じだけど