- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:【VB2008】 コントロールのBackGroundImageがどれになっているかを把握)
【VB2008】コントロールのBackGroundImageがどれになっているかを把握
このQ&Aのポイント
- 使用されているアプリが今どのような状況にあるのかを把握するためにコントロールのBackGroundImageがどれになっているのかを取得する方法について質問します。
- Private Sub Button1_MouseEnter(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseEnterでIf文を使ってButton1.BackgroundImageが特定の画像であるかどうかを判定する方法を試しましたがうまく動作しませんでした。
- 他の手段としてLabelをVisible = Falseで隠し、そこに表示されている文字列を変更する方法も考えましたが、Formの動作が重くなる可能性があるため避けたいです。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
My.Resources.Button1_ONの「Button1_ON」を右クリックし「定義へ移動」を選択してみてください。Resource.Designer.vbのソースが開き、そこにリソースからイメージを読み込んでいるコードが見られると思います。 Button1_ONプロパティの実体は、ResourceManager.GetObjectメソッドの戻り値です。これをMSDNで調べてみると次の記述があります。 MSDNより 「同じ name パラメータで GetObject メソッドを複数回呼び出した場合、戻り値が同じオブジェクトの参照になるとは限りません。」 ということは、Button1_ONプロパティで得られるイメージのインスタンスが「同じものである保証はない」ということで、これがIf文が反応しない理由だと思われます。 例えば次のコードでも False になることがあります。 Dim bln As Boolean bln = My.Resources.Button1_ON Is My.Resources.Button1_ON Console.WriteLine(bln.ToString()) で、解決策ですがLabelなど用意しなくてもButton1.Tagプロパティが空いていませんか?このプロパティはプログラマが自由に使えるObject型の入れ物です。空いていて今後使う予定がないのならここにイメージを識別するデータを入れておけばよいかと。
お礼
Wizard_Zero 様 どうもありがとうございます!! 解決いたしました.「Tag」でございますか..こんな便利なものがあるとは... Form上から一気に15個のチェックボックス群が消えましたd^^; ( orz ) >これをMSDNで調べてみると次の記述があります ↓の中段以降の記事でございますね.どうもありがとうございますm(_ _)m http://msdn.microsoft.com/ja-jp/library/2kd8ks0y.aspx 「同じオブジェクトの参照になるとは限りません」ってそんな事があるもんなんですね.. ご提示いただいた >bln = My.Resources.Button1_ON Is My.Resources.Button1_ON でFalseになるのが非常に新鮮と申しますか..この現象は今の私には 予測もつきません.. 今回もご閲覧・アドバイスいただき本当にどうもありがとうございました! 今作製しておりますアプリで毎日できないことが出てくるので,毎晩 何かしら検索しておりますが,そのうちどうしてもできなかったことは ほとんどうぃず様のおかげで解決しているような...m(_ _)m 自己学習も頑張りますorz ご親切にどうもありがとうございました!!