• 締切済み

VB2015 ListBoxの二次元配列を呼出す

始めまして。 趣味でVBソフトを作りたいと奮闘中です。 ExcelVBAやC#の簡単ソフトを作った経験があります。 パソコン環境は、W10x64、VB2015です。 ListBoxに2次元配列で下記のように書き込み、選択した行の右側のデータ(欄2)を他のTextBoxに表示させたいのです。 下のデータを2次元配列にして読み込ませる方法と、選択した行の欄2のデータを取り込む方法を教えて頂けると嬉しいです。ListBoxのプロパティのMultiColumnはTrueにしてあります。  欄1 欄2 北海道  550 青森県  138 宮城県  230 東京都  1360 現在は次のようにしてなんとか逃げておりますが、2次元配列でスマートに出来れば嬉しいです。 書き込み ListBox1.BeginUpdate() ListBox1.Items.Add("北海道 , 550") ListBox1.Items.Add("青森県 , 138") ListBox1.Items.Add("宮城県 , 230") ListBox1.Items.Add("東京都 , 1360") ListBox1.EndUpdate() 呼び出し Dim textArray = ListBox1.SelectedItem.ToString.Split(",")  Dim Jinko As Single = Single.Parse(textArray(1)) TextBox.Text = Jinko 宜しくお願い致します。 熊谷

みんなの回答

回答No.3

すいません、読解力不足でした。 第1欄と第2欄は混ぜてしまいましたので、スプリットするか '呼び出し Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged Dim myst As String = ListBox1.SelectedItem.ToString() Dim myval As Double = Val(myst.Where(Function(C) C Like "[.0-9]").ToArray()) TextBox1.Text = CStr(myval) End Sub 上記のように数字だけ取り出すかしないと実行できません。

Kumasan2016
質問者

お礼

bybalsendercaseさん 何回も有難うございました。 とても迅速なご回答頂き感謝しております。

Kumasan2016
質問者

補足

bybalsendercaseさん このやり方で上手く行きました。 有難うございました。

回答No.2

再び失礼します。 一応配列の例も載せておきます。 Public Class Form1 Private Sub f() Handles MyBase.Shown Dim mydata(,) As String = {{"北海道", "青森県", "宮城県", "東京都"}, {"550", "138", "230", "1360"}} Dim k As Integer For k = 0 To 3 ListBox1.Items.Add(mydata(0, k) & mydata(1, k)) Next End Sub '呼び出し Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged TextBox1.Text = ListBox1.SelectedItem.ToString() End Sub End Class

Kumasan2016
質問者

お礼

何回も申し訳ありません。 まだ私が未熟で最後までできてませんが、本当にありがとうございます。

Kumasan2016
質問者

補足

bybalsendercaseさん 有難うございます。 これで配列で書き込めました。 で、取り出しは後ろの数字550だけTxtBoxに入れたいのですが、splitして”,”の後を取り出さないとダメですか? myData(指定行,1)とかで表示するには? お手数おかけします。

回答No.1

こんにちは 配列ではなくリストで対応しました。 Public Class Form1 Dim myDic As New Dictionary(Of String, Single) Private Sub f() Handles MyBase.Shown '書き込み myDic.Add("北海道", 550) myDic.Add("青森県", 138) myDic.Add("宮城県", 230) myDic.Add("東京都", 1360) For Each itm As KeyValuePair(Of String, Single) In myDic ListBox1.Items.Add(itm.Key & itm.Value) Next End Sub '呼び出し Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles ListBox1.SelectedIndexChanged TextBox1.Text = ListBox1.SelectedItem.ToString() End Sub End Class リストは配列より機能が強力です。

Kumasan2016
質問者

お礼

教えて頂いたやり方は別projectに利用させていただきます。 有難うございます。

Kumasan2016
質問者

補足

bybalsendercaseさん 素早いご回答有難うございます。 すっきり読み出せているのですが、質問の仕方が悪かったようです。 欲しいのは、”北海道 550”の550だけ書き出したいのです。文字列をsplitすれば取り出せますが、配列ではできないのかというのも疑問なのです。 教えて頂いたやり方は別projectに利用させていただきます。 有難うございました。 Kumasan2016

関連するQ&A