tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル「既存項目の追加」から追加したフォームのアイコンが変更できない
記事No8168
投稿日: 2008/09/18(Thu) 18:48
投稿者皐月
こんばんは、いつも大変お世話になっております。VB2005にて開発を行っております。
タイトルの通り「既存項目の追加」から追加したフォームのアイコンが変更できないので質問させてください。[プロジェクト]-[XXXXのプロパティ]-[アプリケーション]の項目のアイコン設定、FormのプロパティのIconは新しく変更したいものに変更してあります。

デザイン画面で表示されているアイコンは新しいものに変更されているのですが、「実行」を行うとアイコンが以前のものに変化してしまいます。

もしやと思い、Form1.Desiner.vbも開き確認してみたところ、既存項目の追加」から追加したフォームには

Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)

の一文がありませんでした(上記は今回新しく作成したFormにあった一文です)ので、これを追加してふたたび「実行」を行ってみましたが、アイコンは以前のアイコンのままでした。どうしてアイコンが変化しないのでしょう?

一応、FormLoad時に

Me.Icon = My.Resources.NewIcon

と記述することで新しいアイコンに変更することは確認できたのですが、疑問が残ったまますっきりしません。どなたかご存知の方ご教授ください。

[ツリー表示へ]
タイトルRe: 「既存項目の追加」から追加したフォームのアイコンが変更できない
記事No8171
投稿日: 2008/09/19(Fri) 06:33
投稿者花ちゃん
EXE の方のアイコンが変わらないのでしょうか?
Form の方のアイコンが変わらないのでしょうか?

おっしゃるようにやって見ましたが問題なく両方とも変更する事ができましたが。

Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
上記を削除してもデフォルトのアイコンが表示されるだけで、削除して試してから
元の通りに記入したら、問題なく変更後のアイコンが表示されます。

以前のアイコンは、今はどのようにしていますか?
(ソリューション エクスプローラ内に表示されている分)
以前のを削除したらどうなりますか?

他のプロジェクトで同じように変更しても変わりませんか?

変わらないようなら、変更した過程を詳しく箇条書きにして投稿してもらえませんか?

[ツリー表示へ]
タイトルRe^2: 「既存項目の追加」から追加したフォームのアイコンが変更できない
記事No8173
投稿日: 2008/09/19(Fri) 09:58
投稿者皐月
おはようございます。花ちゃん、お返事ありがとうございます。

> EXE の方のアイコンが変わらないのでしょうか?
> Form の方のアイコンが変わらないのでしょうか?

Formのアイコンです。アイコンのプロパティは変更してあるので、デザイン画面では新しいアイコンが表示されますが、「実行」を行うと以前のアイコンに変化してしまいます。

> 以前のアイコンは、今はどのようにしていますか?
> (ソリューション エクスプローラ内に表示されている分)
> 以前のを削除したらどうなりますか?

以前のプロジェクトと同じ位置にアイコンファイルがあります。
これを削除して再び実行してみたところ、やはり以前のアイコン表示のままでした。
検索で同じアイコンファイルがないか探し出し、これも削除を行い実行をしてみましたが、以前の表示のままでした。

> 他のプロジェクトで同じように変更しても変わりませんか?

新しくプロジェクトを作成し、そこに「既存項目の追加」でForm2を追加してみました。
アイコンは上記の操作で削除した状態で行ったので、エラーか表示されないかのどちらかと思っていたのですが、以前のアイコンが表示されている状態でForm2がよびだされてきました。アイコンファイルの位置が知りたかったのですが、これはどこに記述されているのでしょうか?
Form2のプロパティのアイコンを変更しようとすると新しいアイコンの位置が表示されてしまうため、どこのアイコンを参照しているのかわかりません。(一応検索をかけてPC内の以前のアイコンはすべて削除してあります)

> 変わらないようなら、変更した過程を詳しく箇条書きにして投稿してもらえませんか?

1. 新しいプロジェクトを作成して、Form1にボタンを作成。

2.「既存項目の追加」から以前のフォームを追加、このとき追加したフォームには(アイコンファイルを削除した、していないにかかわらず)以前のアイコンが設定されています。

3. プロパティのアイコンの項目を新しいアイコンに変更、フォームのデザイン画面とプロパティのアイコン表示が新しいものに変化します。

4. 「実行」をして、Form1のボタンからForm2をshowで呼び出し、アイコンを確認。

といった手順で確認してみました。

[ツリー表示へ]
タイトルRe^3: 「既存項目の追加」から追加したフォームのアイコンが変更できない
記事No8175
投稿日: 2008/09/19(Fri) 11:49
投稿者魔界の仮面弁士
> Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
> の一文がありませんでした
もしかして、代わりに
 resources.ApplyResources(Me, "$this")
という一文が含まれていたりはしませんか?


> 「実行」を行うと以前のアイコンに変化してしまいます。
[クリーン]後に、[リビルド]してから試してみるとどうでしょうか?


> アイコンファイルの位置が知りたかったのですが、これはどこに記述されているのでしょうか?
*.ico ファイルとして存在しているわけではなく、アイコンのバイナリが
Form1.resx ファイル内に、XML データとして保存されています。

Form の Language プロパティを変更している場合には、別途、
Form1.地域.resx などのローカライズ リソースが含まれる事もあります。

[ツリー表示へ]
タイトルRe^4: 「既存項目の追加」から追加したフォームのアイコンが変更できない
記事No8191
投稿日: 2008/09/19(Fri) 17:59
投稿者皐月
こんばんは魔界の仮面弁士さんいつもお世話になっております。

> もしかして、代わりに
>  resources.ApplyResources(Me, "$this")
> という一文が含まれていたりはしませんか?

はい、含まれているのを確認できました。

> > 「実行」を行うと以前のアイコンに変化してしまいます。
> [クリーン]後に、[リビルド]してから試してみるとどうでしょうか?

アイコンの変化はありませんでした。

> > アイコンファイルの位置が知りたかったのですが、これはどこに記述されているのでしょうか?
> *.ico ファイルとして存在しているわけではなく、アイコンのバイナリが
> Form1.resx ファイル内に、XML データとして保存されています。
>
確認できました。こちらには新しいアイコンのマークが表示されていました。

> Form の Language プロパティを変更している場合には、別途、
> Form1.地域.resx などのローカライズ リソースが含まれる事もあります。

これが原因でした。リソースに含まれていたアイコンを削除すると新しいアイコンに変化しました。新しく作成したFormではまだ作成していなかったので完全に見落とししていました。ありがとうございます。

[ツリー表示へ]
タイトルRe^5: 「既存項目の追加」から追加したフォームのアイコンが変更できない
記事No8192
投稿日: 2008/09/19(Fri) 18:16
投稿者皐月
花ちゃん、こんばんは返信をいただいた記事を削除されてしまったようですが、解決しましたので報告させてください。

私が作成していたプログラムは言語が英語のものを取り扱うことが多いのですが、今回のプログラムも言語が英語のプログラムを作成していました。今回、「既存項目の追加」で追加したFormは以前作成した英語・日本語両方対応しているプロジェクトの一部でした。

今回、日本語のリソースを作成していなかったため、メインリソースしか確認しておらず、ローカライズリソースのアイコンの確認ができていなかったため、現在使用しているPC(日本語)で動作させたときにローカライズリソース(日本語)のアイコンが当てられていたようです。

アイコンのプロパティに原因があるのではないだろうかという先入観があったため、自分で見つけ出すことができませんでした。花ちゃんには貴重な時間を割いていただいて、質問に答えて頂いて感謝しております。原因が確認不足なんて格好悪いですね><以後、自分が英語日本語両方の環境に対応するプロジェクトを作成していることを念頭においてよく確認します。ありがとうございました。

PS この記事が不必要なようでしたら、削除していただいても構いません。

[ツリー表示へ]