前回まで、久々にBCCSkeltonでC++プログラムを書いたら、今度はC#でも書きたくなりました。相変わらずネタは無いですが、前回学んだ「Microsoft Learnを見ているとネタになる」という知恵を実践します。

 

最初に頭に浮かんだのは、

 

イメージリスト

 

です。私が最初にイメージリストを知り、使ったのはBCCForm and BCCSkeltonのツールであるTBEditorで、ツールバービットマップをドラッグして選択するところ、例えばツールバー表示の

「ドア」のビットマップを右の実サイズ編集エリアへドラッグ(マウスアイコンは隠れています)して落とし、

左の拡大編集エリアで編集するところが気に入っていました。

 

このようなことが出来ないかな、と思ったのですが、C#ではそのようなメソッド()は無いですね。残念!

:ImageListクラスはFormsから派生しているようなので、自分でWM_L(R)BUTTONDOWN、WM_MOUSEMOVE、WM_WM_L(R)BUTTONUPのイベントハンドラーを使って作る、ということも可能かも。しかし、何か労多くして益少なし、の感がありますね。

 

何れにしても、ImageListクラスの英文サンプルをネタにしてみようと思い、MSCompAssでコンパイルすると、

このように動くことは動くのですが、

 

(1)不要なコンポーネントのDLLを参照し、宣言している。

(2)コントロールの宣言がコンストラクターに置かれたり、InitializeComponentに置かれたりしてバラバラ。

(3)コントロールの二重定義もある。

(4)コントロール名(label3、label5)をそのまま初期表示している。(↑参照)

(5)イメージを削除しても削除したイメージが表示され続ける。(表示に段差がありますね↓参照)

(6)イメージを削除し、リストボックスが未選択になって、再度削除ボタンを押すと落ちる。(↓参照)

(7)ウィンドウサイズは可変ですが、コントロールは微動だにしません。

等々、(突っ込みどころ満載の)大分手抜きをしたっぽいコードになっています。(ネタとしては最高ですね!)

 

ということで、

 

このサンプルコードとプログラムを、

 

(1)日本語化

(2)コントロールのレイアウトを変更してアンカーを効かせる。

(3)雑なコーディングをきちんと統一化する。(日本語コメントも付けます。)

 

という感じでブラッシュアップしましょう。