• 締切済み

リソースファイルの選択

VB2010で、以下のような書き方でリソースファイルの選択を行っているのですが、 リソースファイルを増やすたびにコードを書き足さなければならず非効率的です。 リソースが10個・20個と増えてくるとその分だけコードが長くなります。 ほかに方法はあるのでしょうか? なお、今はVB2010が入っていないパソコンから投稿しているので コードを思い出しながら書いています。 たぶん大丈夫だと思いますが、もしかしたらエラーが発生するかもしれません。 Private ResourceID As Integer (中略) Dim bmp As Bitmap Select Case ResourceID Case 1 : bmp = My.Resources.picture1 Case 2 : bmp = My.Resources.picture2 Case 3 : bmp = My.Resources.picture3 End Select Select Case ResourceID Case 1 : TextBox1.Text = My.Resources.text1 Case 2 : TextBox1.Text = My.Resources.text2 Case 3 : TextBox1.Text = My.Resources.text3 End Select

みんなの回答

  • Siegrune
  • ベストアンサー率35% (316/895)
回答No.1

内容を見ていたらpicture、textそれぞれ、My.Resourcesに1個定義するだけでいいのでは? と思いました。 (やり方) My.Resources.pictures = "c:\test1.bmp,c:\test2.bmp,c:test3.bmp" のように定義しておいて、 dim wk() as string wk()= split(My.Resources.pictures,",") '※splitの文法忘れたのでマニュアルみてください。 bmp = wk(ResourceID) みたいにすれば実現できると思います。 但し、フォルダ名がやたら長いとかで文字数制限に引っかからないかどうかは、 My.Resourcesの1項目あたりに格納できる文字数を確認してください。 多分、stringの最大文字数と一緒だったとは思いますが。

checosequesto
質問者

お礼

回答ありがとうございます。 現在はVBが使えないパソコンから投稿しているため今すぐには試せませんが 成功したら解決と致します。

checosequesto
質問者

補足

リソースファイルから読み込んでいるようには見えないのですが……。 結局Cドライブにあるファイルから読み込んでいるのと一緒ではないでしょうか?

関連するQ&A

  • VB.NETのリソース内のEXCELを開く方法

    環境  WindowsXpPro VB2008EE Excel2007 VB.NETのリソースに登録したExcelファイルをプログラム中から開く(呼び出す)コードを探しているのですが、なかなか見当たりません。 MSDNも探しましたが、探し方が悪いのか見つかりません。 My.Resources.ResourceManager.GetObjectなどを使うのでしょうか? いずれにせようまくいきません。 御存じのかたがいらっしゃいましたらぜひ教えてください。 よろしくお願いいたします。

  • VB2008での配列の初期化方法

    VB2008での配列の初期化方法 様々なサイトなどを見て、配列を宣言する時に初期化する方法を知ってこんな風なコードを書いて、配列の初期化を試みました。 書いたコード Option Strict On Public Class Form1() Private AImage As Image = (My.Resources.AImage1 As Image, My.Resources.AImage2 As Image,My.Resources.AImage3 As Image,My.Resources.AImage4 As Image, My.Resources.AImage5 As Image,My.Resources.AImage6 As Image, My.Resources.AImage7 As Image) 後略 もちろんAImage1~7はリソースで読み込んでありますし、End Classもずっと下の方に書いてあります。 ここで、「・・・(My.Resources.AImage1 As Image,・・・」のAsの部分にだけ波線が引かれて、「')' が必要です。」というエラーが出ました。 最後を「)」で終わっているのに、なぜこのエラーが出るのでしょうか。使用言語はVitualBasic2008です。文法等も含めて、改善点を教えていただければ幸いです。

  • Case Eles

    ただいま私はこのようなプログラムを作っています。 Private Sub TextBox貸方_Change() Dim 貸方 As Integer Tx貸方 = TextBox貸方.value Select Case Tx貸方 Case 101 TextBox貸方摘要.Text = "現金" Case 102 TextBox貸方摘要.Text = "当座預金"            ・            ・            ・  'Case Eles 'MsgBox ("該当コード無し") End Select End Sub しかしなぜか1011などの存在しないコードを入力してもメッセージボックスが表示されません!誰かお力をお貸しください!

  • エクセル以外のファイルサイズを取得するには?

    例えば画像ファイルのサイズを取得しようとしているのですが Sub ファイルサイズ取得() Dim MyFileName As String MyFileName = "D:\My Documents\My Pictures\画像.bmp" Debug.Print FileLen(MyFileName) End Sub これではダメでした。 Sub ファイルサイズ取得() Dim MyFileName As String MyFileName = "D:\My Documents\My Pictures\画像.bmp" Debug.Print CreateObject("scripting.filesystemobject").GetFolder(MyFileName).Size End Sub これもダメでした。フォルダならいけるのですが。 テキストや画像ファイルなどエクセルファイル以外のサイズを取得する方法を教えてくださいませ。 オフィス2003です。

  • [VB2005]リソースのアドレス指定?

    ”My.Resources.TEST_DATA”というテキストデータの保存先を 取得する方法がわかりません。 strFileName = My.Resources(こっからどうするのか分らない) strFileName = "C:\どっかにあるTEST_DATA" 例の表現が自分でもよくわからなくなってしまいましたが、 申し訳ないです。 もうひとつ、そのリソースのファイル名も知る方法があれば教えてください。

  • Case Eles part2

    以前にも投稿させていただいたものと同じなのですが、締め切ったあとにまた問題が発生しまして・・・解答していただいた方には申し訳ないのですが今一度知恵をお貸しください! Private Sub TextBox貸方_Change() Dim 貸方 As Integer Tx貸方 = TextBox貸方.value Select Case Tx貸方 Case 101 TextBox貸方摘要.Text = "現金" Case 102 TextBox貸方摘要.Text = "当座預金"            ・            ・            ・  Case Else TextBox借方摘要.Text = "該当コード無し" End Select End Sub としても一度入力してからその入力したコードを消すと 実行エラー13":型が一致しません と表示されてしまいます。どうすればよいのでしょう???

  • リソースの値を変数で取得

    VB.NET2010を使用しています。 リソースを「my.resources.リソース名」と、じかに指定すれば値を取得できるのですが、 リソース名の部分を変数にして値を取得したい場合はどうすればいいのでしょうか?

  • サイコロの出目を全部表示したいです

    Visual Basic2008Expressを使っています フォームにボタンとテキストボックスを貼り付けて ボタンをダブルクリックして次のようにプログラムを書きました Dim saikoro As New Random Dim deme As Decimal Select Case deme Case 1 Textbox1.text = ("出目1") Case 1 Textbox1.text = ("出目2") Case 1 Textbox1.text = ("出目3") Case 1 Textbox1.text = ("出目4") Case 1 Textbox1.text = ("出目5") Case 1 Textbox1.text = ("出目6") End Select これを正常に作動しました。そこで例えば10回サイコロを降った出目の結果はすべて表示するプログラムを作りたいんですがどうすればいいのでしょうか?Textbox1のところをRichTextBox1を変えてプログラム書きましたが結果は同じでした。 教えてください。

  • VBからExcel操作について

    VB2008を使用しています。 Excelのシート内でセルA1に何らかの文字が入っている場合にVB2008上のTextBoxの背景色を変える場合に以下のコードを使用しています。 Select Case tuki.Range("A1").Value Case Is <> "" TextBox1.BackColor = Color.Maroon End Select ここで質問なのですが、A1とA2の両方に何らかの文字が入っている場合にTextBoxの背景色を変えるにはどうすれば良いか教えて下さい。 Select Case tuki.Range("A1:A2").Value Case Is <> "" TextBox1.BackColor = Color.Pink End Select 上記の方法ですと「これらの引数で呼び出される、パブリック '=' がないため、オーバーロードの解決に失敗しました: 'Public Shared Operator =(a As String, b As String) As Boolean': パラメータ 'a' に対応する引数は、'Object(,)' から 'String' へ変換できません。」とエラーメッセージが表示されてしまいました。メッセージの意味も理解出来ず困っています。よろしくお願いいたします。

  • VB2008、文字色について教えて下さい

    VB2008を使用しています。 現在、Form内複数あるTextBox内の文字をいくつか選択し、RichTextBox内に"・"で区切って代入するプログラムを作成しています。 その際、RichTextBox内に代入されたTextBoxの文字色を赤色に変える(元は黒色です)コードを下記のように作成しました。 Dim strList() As String strList = RichTextBox1.Text.Split("・"c) For Each strMoji As String In strList Select Case strMoji Case TextBox1.Text TextBox1.ForeColor = Color.Red Case TextBox2.Text TextBox2.ForeColor = Color.Red End Select Next 上記コードは問題ないのですが、RichTextBox内に一度代入された複数のTextBoxの文字から、いくつかを選択して削除した際、選択したTextBoxの文字を元の黒色に戻す方法がわかりません。単純に全てのTextBoxの文字色を黒色に戻すコードを書いてしまうと、同様の操作を他のRichTextBoxに適用した場合、そちらに代入された文字色も黒色に戻ってしまいます。上記のコードを応用すれば出来そうなのですが、良い方法はないでしょうか?上記コード3行目の「In」を「Out」や「Cut」に変更しても構文エラーになってしまいました。

専門家に質問してみよう