• 締切済み

VB.NET)ボックスからラベルにデータを反映させたい

先日コンボボックス連動についての質問をしたものです 今回も金曜夕方完成まででどうしても分からない部分がありお知恵をお借りしたく質問させていただきます(聞ける方はいるのですがどうしても直接見てもらえる状況でなく口頭になってしまうので上手く聞けず説明できず理解できずの状態です) 前回同様条件は、VB.NET(言語:VB)でAccessは利用なら最低限 Access中心の開発やマクロ、Excel等は使用しないということでお願いします private sub form4_load(bybal~)handle form4_load dim strdata() as string = {"年会費","月会費"} listbox2.items.addrange(strdata) listbox3.items.addrange(strdata) select case form2.combobox1.text case "東北" label9.text = "東北"(関東とコンボボックス1で出たら関東がラベルに表示できるようしたいのです) end select 上記はリストボックスに格納するために記載、listbox2と3は1と4にそれぞれボタンクリックがあればデータを写す作業をします 問題は下で、Form4にLabel9があるのですが別のForm2のコンボボックス で選ばれたデータをLavel9に反映させたいのです 同様Form2のコンボボックス2(1で選ばれたものの中でさらに選択するという設定になっています)で選ばれたデータをLavel10に反映させたいのですが上手くいきません ここはこうしたほうがいい、こう書いたらどうか?みたいなのがありましたらよろしくお願いいたします VBはあまり経験が無く分からないことばかりなので、分かりやすくお願いできますでしょうか?

みんなの回答

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

Form2とForm4の実体(インスタンス)の関係がどのようになっているのでしょう Class Form2 End Class Class Form4 End Class といった宣言の場合 Form2のインスタンスから Form4のインスタンスは参照する術がありません Form4から Form2が参照出来ればいいなら Class Form4   Public frm2 as Form2   Private objFrm2 as Form2   Public WriteOnly Property myForm2() as Form2     Set( ByVal value as Form2)       objFrm2 = value     End Set   End Property End Class といった具合に Form4側で Form2を参照出来る仕組みを作ります Form4を作成する際に dim frm4 As New Form4 frm4.Form2 = frm2 または frm4.myFrm2 = frm2 といった具合に設定します ... この場合 frm2がForm2のインスタンスです こうしておけば Form4側では frm2.ComboBox1.Text または objFrm2.ComboBox1.Text などと参照出来ます インスタンスとクラス名の区別をしましょう

sokayoguru
質問者

補足

インスタンスは class form2 end class とForm2もForm4も同じようになっておりました また最初の宣言でPrivateになっていたところをPublicにし、説明を参考にし一度配列をdim~で宣言してListから配列に、配列からTextにしたところ上手くいきました まだ複数リストで選ばれた時テキストボックスに結果をリストで選ばれた個数返す(改行無しで)ことが出来てないのですが、for文(For~Next?)で選ばれた個数分ループさせるのですが、Nextは条件の処理が1回終わったらそのまま外に出てしまうという処理なのでしょうか?それとも条件の処理が全て終わるまで外に出ないのでしょうか? 後者の場合、現在複数個選んでも処理1回終わるとFor文の外にでて作業終了してしまい上手く出ないのです…2個選んだら結果2個返すというようにしたいのですがどのようにしたら良いのでしょうか?

  • pulsa
  • ベストアンサー率57% (34/59)
回答No.2

UserForm1.Label1.Caption = UserForm1.ComboBox1.Value コンボボックスの値とラベルの表示はこんな感じで設定します 一々UserFormから書くのが、間違えないコツです ComboBox1の選択に従ってComboBox2に表示するリストを切り替えるのは、ComboBox1_SelectedIndexChangedのイベントにSelectcaseで読み込むデータを選択するようにする   Private Sub ComboBox1_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ComboBox1.SelectedIndexChanged     Select Case (ComboBox1.ValueMember)       Case "関東"         ComboBox2.DataSource = hogehoge       Case "東北"         ComboBox2.DataSource = higehige     End Select   End Sub でいかがでしょう? あと、言っても詮無い事だけど、誰も判りにくく答えてるつもりはないんじゃないかな? そんなつもりじゃないんだろうけど、ちょっと鼻に衝くセリフだったんで一応 明日までだね がんばれ!

sokayoguru
質問者

補足

ありがとうございます、参考にさせていただき少し変更を交え何とか表示が出来るようになりました 分かりにくく答えてるつもりは無いと思っております 私自身、常駐先でVBできる方に電話で聞いていたのですが口頭説明(文章だけ~言葉だけなど)では理解できなかったので分かりやすくと記載させていただきました 不快にさせてしまったのならば申し訳ありませんでした

  • k_sidina
  • ベストアンサー率52% (9/17)
回答No.1

form4 からみて、form2 のインスタンスはどういう風に宣言されていますか? プロジェクトの構成がよくわからないのですが、 form2 はどこで show されますか?

sokayoguru
質問者

補足

会社いたので今まで返信できずすみませんでした Form2はForm1(今回は作業せず)とForm4でshowされる場面がありました Formは全部で6つあるのですがTOPの画面であるForm1とForm2のデータを入力・選択するための画面であるForm4とつながっているので、以上の2つでshowという形です

関連するQ&A

  • VB.NET)コンボボックスの連動について

    失礼いたします、コンボボックスを連動させるプログラムを書いているのですがうまく連動しません、よろしければお知恵をお貸しくださいませ コードを書くにあたりの条件は、開発はVisual Basic 2005のVisual Basic データベースから呼び出す場合ならAccess 2003を使用(今現在は使用しないで開発しています) Access内でコンボボックスを、Excelでコンボボックスをなどはしません…今回はVBでコンボボックスを連動させたい 今回ちょっと公に出来ない箇所があり記号で伏せさせていただきますが、記号は日本語が入ります Form1でload(ロードってこれであってましたっけ?)部分に以下を記載 dim strdata as string = {"●●","●●","●●"} (すみません、あと一文あったのですがちょっと思い出せないので) それで連動するcomobox2には以下を記載 dim strdata as string = {"●●","●●"} dim i as integer select case strdata(i) case 0 combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") case 1 combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") combobox2.item.addrange("●△ ×") となり、combobox1で最初の●●が選ばれればcombobox2のcase0を表示させるようにしたいと思っていますが上手く表示が出ません 今週中に仕上げなければいけないので昨日今日と色々調べてみたのですが、VBAやAccess・Excel関係が殆どでVBのが見つからずAccessやExcelのを見ても上手くいかなかったのと、解説が良く分からなかったので、分かりやすく解説をお願いします

  • VB6のコンボボックスのテキストプロパティ

    VB6のコンボボックスのテキストプロパティですが、 Combo1.text="test"と入れてもコンボボックスにtestと表示されません。 Form_Loadモジュールに記載するとtestと表示されるのですが、 最初testと表示されていて、コンボボックスの候補を一つ選んで、 今の設定ではその候補は使用できないので、初期状態のtestという表示に戻したいのですが、 testに戻りません。

  • コンボボックスにデータを反映させたい

    VB6.0を使っています。 あらかじめメモ帳にデータをまとめて保存しておいて、そのファイルのデータをコンボボックスの選択肢に反映させたいのですがどうすればいいかわかりません。 宜しくお願いします。

  • VB2008でコンボボックスのクリアについて

    VB2008でコンボボックスのクリアについて お世話になります。 コンボの設定を With ComboBox1 .Items.Clear() .Items.Add("a") .Items.Add("b") .SelectedIndex = 0 End With のようにしていた場合 ComboBox1.Items.Clear()を実行しても "a"の値がコンボに残るみたいなのですが、 指定の方法が悪いのでしょうか? .SelectedIndex = 0を指定しないと クリアされるみたいなのですが。 よろしくお願いいたします。

  • VB2010 ListView 使い方

    VB2010でListViewを使っています。かなり順調にプログラムが出来ているのですが、トラブルに遭遇しました。 Form1でDATAを入力して、Form2とForm3でそのDATAをListViewを使って表示しています。 そして、Form2のListViewをForm4に簡素化した雛形にして、ListViewを使って表示させています。 同様に、Form3のListViewをForm5に簡素化した雛形にして、ListViewを使って表示させています。 Form2からForm4は問題なく表示されますが、Form3からForm5はエラーとなります。 エラーは次のところで生じます。 ListView1.Items(2).SubItems.Add(Form3.ListView1.Items(1).SubItems(2)) エラーメッセージは次のようです。 「'1' の InvalidArgument=Value は 'index' に対して有効ではありません。」 また、次のようにコーディングしてみると、 ListView1.Items(2).SubItems.Add(Form3.Label2.Text) 「Labl2」と表示されるだけです。Label2の情報は表示されません。 単純にDATAを移すだけなのに、1つは出来て、もう1つは出来ないというのが分かりません。 どこに問題があるのでしょうか。 かなり悩んでいますが、解決策が見出せません。 ご教授いただける方が居られましたら、宜しくお願い申し上げます。

  • VB2008でのコンボボックスの扱いについて

    VB2008でのコンボボックスの扱いについて 教えてください。 コード(3桁)と名称をコンボに設定したいの ですが、 例えばコード1桁の時、3桁の時でも後に続く 名称の先頭を揃えたいのですが。 VB6の時は .AddItem Format("01", "@@@!") & "名称"で できたのですが。 VB2008で .Items.Add("01".PadRight(3) & 名称)で 実行すると微妙にずれるのですが。 何か良い方法を教えて頂きたいのですが。

  • コンボボックスのインデックス値取得について

    Visual Stdio 2008 Express Editionを使ってVBの勉強をしています。 コンボボックスのことについてお伺いしたいことがあり、 投稿させていただきました。 Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load With ComboBox1 .Items.Add("りんご") .Items.Add("みかん") .Items.Add("なし") End With End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox("コンボボックスで選択した項目のインデックス") End Sub End Class コンボボックスで「みかん」を選択し、 ボタンを押下したときに、「みかん」のインデックス値として 「1」を出力させたいのですが、この表示方法がわからない状態です。 VB6.0であれば、ItemDataプロパティを使えばうまくいくと 思うのですが、VisualStudioだとどのプロパティを用意すれば よろしいのでしょうか。 ご教授の程お願い致します。

  • テキストファイルの読み込みとリストボックスへの反映

    VB初心者です。VB2008を使用しています。 2のリストボックス(listbox1,listbox2)があり、 listbox1には("1","2")、listbox2には("A","B")という値がはいっています。 このデータをテキストファイル(test.txt)に次のように保存します [listbox1] 1 2 [listbox2] A B ここまでは出来ました。 そこで質問です。 保存したこれらの値をそれぞれのリストボックスに読み込ませたいのですが、 どのようにすればよいでしょうか。 実行ファイルとテキストファイルは同じフォルダ(c:\testprogram)に入っています。 うまく伝えられませんがよろしくお願い致します。

  • キューとコンボボックスの使い方  VB2008

    VB2008を使っています。 キューとコンボボックスの使い方がわからないのですが、以下のソースで (1)キューとデータソースを使う。 Dim queue As Queue = New Queue(20) For i As Integer = 0 to 9 queue.Enqueue( i.ToString() ) Next i ComboBox1.DataSource = queue.ToArray ComboBox2.DataSource = queue.ToArray (2)べたな方法 ComboBox1.Items.Clear() For i As Integer = 0 to 9 ComboBox1.Items.Add( i.ToString() ) Next i ComboBox2.Items.Clear() For i As Integer = 0 to 9 ComboBox2.Items.Add( i.ToString() ) Next i ------------------------ (1) (1)と(2)は厳密にどのように違うのでしょうか? (2) (1)で心配なのは、キューの上限を20にしていて、実際使っているのは10個で後は空です。 この状態で、コンボボックスのDataSourceにセットした場合、(2)と同じように10件だけになっているのでしょうか? (3) (1)は同じキューを使いまわしています。コンボボックス1と2は独立して使えるのでしょうか?(データは同じです。)

  • VBでコンボボックスとテキストボックスの連係

    VBでフォームにデータコンボボックスとテキストボックスを一つづつ作り、データコンボボックスで値を選択し、その値に対する値をテキストボックスに表示させたいんですがどうすればいいでしょうか? データコンボボックスで選択する元になるテーブルは ID | 商品 1 | みかん 2 | ばなな 3 | りんご と、上記のような形のテーブルをもちいています。 例えばデータコンボボックスで「1」を選択した場合テキストボックスに「みかん」と表示させたいです。