2012年8月29日水曜日

プロジェクトに追加したリソースが参照できない


慣れない Visual Studio 2010 でVBの開発をしています。既存プロジェクトの修正が多くて、開発環境がバラバラw

ボタンに画像を貼るので、画像をリソースに追加。ボタンコントロールのプロパティで Image の参照ボタン[...]をクリックすると「リソースの選択」ダイアログが表示されるので、プロジェクトリソースファイルを選択。一覧から画像を選択……と思ったら、さっき追加したはずの画像が表示されてないので選択できない。うーむ。

ソリューションエクスプローラーでResourceフォルダを確認すると、貼り付けたかった画像ファイルはちゃんと表示されているし、ダブルクリックすると内蔵の画像エディタ(?)で開きます。

ここで例によってググるw なんかヘルプ検索するよりググったほうが解決策が見つかりやすい……。

どうやらそもそもの「画像をリソースに追加した」つもりでいたところからして間違っていたようですw
追加したつもりの手順はこう。

ソリューションエクスプローラに表示されている、プロジェクトのResourceフォルダに画像ファイルをコピー
(Windowsのエクスプローラから当該フォルダに画像ファイルをコピー)
ソリューションエクスプローラのResourceフォルダにファイル名が表示されたけど無地のアイコン表示
右クリックして[プロジェクトに含める]を選択
アイコンが画像ファイルのものに変わる

これだけじゃ「リソースの選択」ダイアログから選択できないのでした。
(これはこれでプロジェクトに関連するファイルの管理としては必要だと思うけど)
以下、追加手順。

プロジェクトのプロパティで[リソース]タブを選択
(画像の追加ができそうにない画面が表示されるけど、これは文字列リソースの画面)
左上の[文字列]と表示されているドロップダウンリストから[イメージ]を選択
イメージ(画像)の一覧が表示される
[リソースの追加]のドロップダウンリストを開いて[既存のファイルの追加]を選択
([リソースの追加]はボタンとしてクリックできるけど、ここでクリックすると新規リソースの追加になってしまうので、今回はしない)
ファイル選択ダイアログが表示されるので、追加したいファイルを選択
(ここでさっきコピーしておいたResourceフォルダのファイルを選択するとよい)

これで「リソースの選択「ダイアログで、プロジェクトリソースファイルの一覧にファイルが表示されるようになります。

ただしファイル名に注意。リソースに追加されると、通常、リソースの名前(Name プロパティ)はファイル名になりますが、リソース名に使用できない名前があり、追加時にエラーが出たり、名前が自動的に変更されたりします。

「~」が含まれているとNG。他にもあるかも。
ファイル名 hogehoge~hoge.png の画像を追加してみると、

---------------------------
Microsoft Visual Studio
---------------------------
リソース 'hogehoge~hoge' の名前には 1 つまたは複数の無効な文字 '~' が含まれているので、有効な識別子として使用できません。これらの文字を削除するか別の文字に置き換えてからもう一度やり直してください。
---------------------------
OK   ヘルプ
---------------------------

とエラーダイアログが表示されるので、ファイル名を変更してからやり直し。

エラーは出ないけどファイル名が自動的に変更されるのは次の場合(これも、他にもあるかも)。

「-」(ハイフン)、「.」(ピリオド)、空白→「_」(アンダースコア)に置き換えられる
(ピリオドは拡張子の区切り以外に使用されている場合。例:hoge.hoge.png → hoge_hoge.png)
数字で始まるファイル名→先頭に「_」(アンダースコア)が追加される
既に同名のリソースがある場合→末尾に1(以下連番)が追加される

0 件のコメント: