- ベストアンサー
2次元配列の選択と表示について
- Visual Basic 2008 express editionでの2次元配列の選択と表示についての質問です。
- Radiobuttonを選択し、Comboboxで配列の番号を決め、ボタンをクリックするとTextbox1に選択した配列番号の値が表示される仕組みについて知りたいです。
- 関連のサイトを調べましたが、理解できませんでした。どなたか教えていただけないでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
補足説明ありがとうございます。コード修正しました。行数削減されていますが、やっていることはほとんど同じです。 Private Sub Form5_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load ComboBox1.Items.AddRange(New String() {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}) ComboBox2.Items.AddRange(New String() {"0", "1"}) RadioButton1.Tag = New String(,) {{"G", "Z", "S", "L", "E", "F", "G", "H", "W", "Y"}, {"A", "B", "C", "D", "E", "B", "G", "H", "Q", "U"}} RadioButton2.Tag = New String(,) {{"Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P"}, {"A", "S", "D", "F", "G", "H", "J", "K", "L", "Z"}} End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If ComboBox1.SelectedIndex < 0 Or ComboBox2.SelectedIndex < 0 Or _ (RadioButton1.Checked = False And RadioButton2.Checked = False) Then Return Dim strArray As String(,) Select Case True Case RadioButton1.Checked : strArray = CType(RadioButton1.Tag, String(,)) Case RadioButton2.Checked : strArray = CType(RadioButton2.Tag, String(,)) Case Else : Return End Select TextBox1.Text = strArray(ComboBox2.SelectedIndex, ComboBox1.SelectedIndex).ToString End Sub
その他の回答 (1)
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
いまいちデータの状況が分からないのですが… > 使用する配列(1 or 2) 2次元配列が2種類あるということでしょうか? > Combobox: 横(10)、縦(10) 2次元配列は2*10なのに、横10・縦10とは? 1つの2次元配列に対して、インデックスとなる値が3つあるように思えます。 ただ、要点はボタンをクリックしたときに、特定の配列ではなく動的に参照した配列から要素を抜き出したい、ところだと決め打ちしてコードを書いてみました。 RadioButtonのTagにそれぞれ2次元配列を格納しておいて、チェックされている方の配列から要素を取得するものです。 配列を一旦Object(Tagプロパティ)に落とし、参照時にCTypeで2次元配列に戻す方法で実現しています。 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Call CreateList() ComboBox1.Items.AddRange(New String() {"0", "1"}) ComboBox2.Items.AddRange(New String() {"0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}) RadioButton1.Tag = New Integer(,) {{0, 1, 2, 3, 5, 6, 7, 8, 9, 10}, {0, 1, 2, 3, 5, 6, 7, 8, 9, 10}} RadioButton2.Tag = New Integer(,) {{0, 1, 2, 3, 5, 6, 7, 8, 9, 10}, {0, 1, 2, 3, 5, 6, 7, 8, 9, 10}} End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If ComboBox1.SelectedIndex < 0 Or ComboBox2.SelectedIndex < 0 Or _ (RadioButton1.Checked = False And RadioButton2.Checked = False) Then Return End If Dim intArray As Integer(,) Select Case True Case RadioButton1.Checked intArray = CType(RadioButton1.Tag, Integer(,)) Case RadioButton2.Checked intArray = CType(RadioButton2.Tag, Integer(,)) Case Else Return End Select TextBox1.Text = intArray(ComboBox1.SelectedIndex, ComboBox2.SelectedIndex).ToString End Sub
補足
ご返事頂き、ありがとうございました。 説明の不足ですみませんでした。 再度詳細を説明致します。 ---------------------- Radiobutton1 Radiobutton2 配列:2次元配列 2つ 1個目: G,Z,S,L,E,F,G,H,W,Y A,B,C,D,E,B,G,H,Q,U 2個目: Q,W,E,R,T,Y,U,I,O,P A,S,D,F,G,H,J,K,L,Z Combobox1値: 0~9の10個 Combobox2値: 0~1の10個 --------------------- 【実行例:】 1 Radiobutton1を選択 (この時点で1個目の2次元配列値の使用を決め) 2 Combobox1とCombobox2を選択することにより、上記の配列の値の番地(横+縦)を決定 3 ボタンをクリックして、Textbox1に選択した配列番地の値を表示させる 例えば、 Combobox1は 5(横)とCombobox2(縦)は1を選択する場合は 配列1の”B”をTextbox1に表示される Wizard_Zeroさんからの答えをすると、Combobox1とCombobox2の合計値が表示されました。 すみませんですが、実行例を参照し、もう1度答えを頂けませんでしょうか。 (^@^)
お礼
親切に答えて頂き、ありがとうございました。 これから、VBに続けてがんばります。 まだ宜しくお願いします。^ー^