WPFとVBでアプリ作る準備その8、コントロールの削除、変数の中身が変化した時に何かの処理をしたい時はPropertyのSetで
前回は昨日
コントロールの削除
選択画像の削除
WPFとVBでアプリ作る準備その7、指定した間隔ごとにコントロールをマウスドラッグ移動 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/13924059.html
デザイン画面とXAML
画像を表示するExImageクラス
MainWindow
選択画像の削除で必要なのは
画像(ExImage)を配置している親コントロール(canvas1)から削除
すべての画像を入れてあるリストコレクション(CollectionExImage)から削除
別の画像を選択画像にする
必要じゃないけどあったほうがいいのは
選択画像の見本を表示しているImageコントロールの画像の切り替え
選択画像を削除する
RemoveExImage
WindowフォームアプリのようにDisposeは必要なさそう、ラクチン
なので削除は282,283の2行で終わり
残りの行は選択画像を別の画像にする処理
基本は削除した画像のひとつ下にあった画像を次の選択画像にしている
ひとつ下の緑の画像が選択画像になる
緑の画像は一番下なので削除してひとつ下の画像を選択しようとしても
できないので、その時だけは逆にひとつ上の画像を選択することにする
If i > 0 Then
FocusExImage = CollectionExImage.Item(i - 1)
ElseIf i = 0 AndAlso CollectionExImage.Count > 0 Then
FocusExImage = CollectionExImage.Item(i)
Else
FocusExImage = Nothing
End If
削除した画像が一番下(最背面)じゃなければ削除した画像のひとつ下の画像
削除した画像が一番下でそれ以外に画像がまだあればひとつ上の画像
画像が1つもなければ空にする
って書いたけど、いま見てたらなんか冗長な感じがする
If CollectionExImage.Count = 0 Then画像が1つもなければ空にする
FocusExImage = Nothing
ElseIf i = 0 Then
FocusExImage = CollectionExImage(i)
Else
FocusExImage = CollectionExImage(i - 1)
End If
削除画像が一番下ならひとつ上の画像を選択
それ以外ならひとつ下の画像を選択
あんまり変わらないけどこっちのがいい
これで削除とそれに伴う選択画像(FocusExImage)の入れ替えができた
あとはアプリのウィンドウの左上にある見本画像の変更
これをしないと
こうなる
この見本画像の変更したい時は削除した時以外にも
クリックで選択画像が切り替わった時がある
つまり二箇所ある、というか今回ので増えて二箇所になったから
それぞれに見本画像の変更する処理を書けばいいんだけど
選択画像が切り替わった時に動くイベントがあれば
その一箇所に書けばラクチンだなあって思って
変数 変更時イベントとかでググったら
VB.NET2008で、変数の変化によるイベント - VB.NETで、Boolea... - Yahoo!知恵袋プロパティのセットのところで実行すればいい!
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1073962530
これはかなり基本的なことな気がするwでも全然思いつかなかったし
プロパティって自分で書いて使ったことほとんどないから
VB中学校の
VB プロパティの作成ここを見て書き直した
http://homepage1.nifty.com/rucio/main/dotnet/shokyu/standard47.htm
前回まではこうだった
今回、ずいぶん増えたけどこの方がいろいろできるし
ここ一箇所に書けばいいので他の部分が増えなくて済む
これで選択画像(FocusExImage)が切り替わった時っていうのは
この31行目からのSetのことだからこの後に処理を書けばいい
実際に切り替わるのは33行目なのかな、なのでそれ以降に書いた
37行目から41行目が見本画像を切り替える処理
これで見本画像切り替えは選択画像切替時に自動でできるようになり
前回の152行めが不要になったので削除(コメントアウト)
予定しているテスト
- 指定した色を透明にする
- レイアウト
完了したテスト
- 画像ファイルドロップで画像表示
- 画像をマウスドラッグで移動
- 表示画像のレイヤー間の移動(入れ替え)ZOrder指定
- 表示画像すべてを画像ファイルとして保存
- ドラッグ移動時に指定ピクセル数ごとに移動
- 指定した画像の表示を消す(削除) ←New
テストと言いつつ継ぎ足しで書いていったから
作っているのとあんまり変わらなくなったなあ
ヤフーブログの文字数制限でコードが全部載せられなかったので
WPFとVBでアプリ作る準備その8の記事のコード全文 ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/13926875.html
この記事の続き
WPFとVBでアプリ作る準備その9、XAMLでコントロールのレイアウト ( ソフトウェア ) - 午後わてんのブログ - Yahoo!ブログ
http://blogs.yahoo.co.jp/gogowaten/13929569.html