>選択した店舗の店舗番号を取得したいんです。
MSDN のListBox のサンプルをComboBox にして今回の質問に合わせて修正したものを以下に挙げておきます。
コマンドプロンプトで
vbc sample.vb
sample
でそのまま実行して試してみることができます。
要点は、DataSource でArrayListをつないでおくということです。
DataSource を使うとSelectedValue で取り出せるので便利ですね。
でもまあ、
こんなふうにしなくても、別にArrayListで保持しているのがわかっていれば、index で対応付けをして取り出したり設定したりできます。
'---------------------------------------------------------------
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Collections
Public Class Store
Private aStoreName As String
Private aStoreNo As Integer
Public Sub New(ByVal name As String, ByVal no As Integer)
MyBase.New()
Me.aStoreName = name
Me.aStoreNo = no
End Sub
Public ReadOnly Property StoreName() As String
Get
Return aStoreName
End Get
End Property
Public ReadOnly Property StoreNo() As Integer
Get
Return aStoreNo
End Get
End Property
Public Overrides Function ToString() As String
Return Me.aStoreName & " - " & Me.aStoreNo
End Function
End Class
Public Class ComboBoxSample
Inherits Form
Friend WithEvents cmbStoreList As ComboBox = New ComboBox()
Dim textBox1 As TextBox = New TextBox()
<System.STAThreadAttribute()> _
Public Shared Sub Main()
System.Windows.Forms.Application.Run(New ComboBoxSample())
End Sub
Public Sub New()
Me.AutoScaleBaseSize = New Size(5, 13)
Me.ClientSize = New Size(292, 181)
Me.Text = "ComboBox Sample"
cmbStoreList.Location = New Point(24, 16)
cmbStoreList.Name = "cmbStoreList"
cmbStoreList.Size = New Size(232, 130)
textBox1.Location = New Point(24, 160)
textBox1.Name = "textBox1"
textBox1.Size = New Size(40, 24)
Me.Controls.AddRange(New Control() {cmbStoreList, textBox1})
Dim Stores As New ArrayList()
Stores.Add(New Store("A店", 15))
Stores.Add(New Store("B店", 20))
Stores.Add(New Store("C店", 45))
Stores.Add(New Store("BLUE店", 99))
cmbStoreList.DataSource = Stores
cmbStoreList.DisplayMember = "StoreName"
cmbStoreList.ValueMember = "StoreNo"
End Sub
Private Sub InitializeComponent()
End Sub
Private Sub cmbStoreList_SelectedValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbStoreList.SelectedValueChanged
If cmbStoreList.SelectedIndex <> -1 Then
textBox1.Text = cmbStoreList.SelectedValue.ToString()
End If
End Sub
End Class
お礼
なるほど、自分で保持するようにしないとだめなのですねー 何度もありがとうございました! これを参考に作ってみます!