アプリ版:「スタンプのみでお礼する」機能のリリースについて

ListBoxで現在選択している項目のValueを取得する方法はわかるのですが、X個目のValueの値を参照、設定する方法がわかりません。教えてくださいー

A 回答 (3件)

>選択した店舗の店舗番号を取得したいんです。


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
    • good
    • 0
この回答へのお礼

なるほど、自分で保持するようにしないとだめなのですねー
何度もありがとうございました!
これを参考に作ってみます!

お礼日時:2006/03/29 17:17

>Valueではなくて、リスト名が変わってしまいました


もしかして、DataSource で設定してます?
ヘルプには、

DataSource プロパティを設定した場合、ユーザーは項目のコレクションを変更できません。

とありますので、
その場合、DataSource の元の方を変更しないとだめじゃないかな
またまた、勘違いしてたらごめんなさい。
どんな感じでやっているか補足してくれた方が、いいような気がします。

この回答への補足

ごめんなさい!一つ大きな勘違いをしていました!
リストボックスではなくてコンボボックスでした。

やりたいことを細かく説明すると、選択した店舗の店舗番号を取得したいんです。
コンボボックス(cmbStoreList)
表示:A店 Value:15(店舗番号15)
表示:B店 Value:20(店舗番号20)

初期設定関数
cmbStoreList.Items.Add("A店")
cmbStoreList.Items.Item(0) = 15
cmbStoreList.Items.Add("B店")
cmbStoreList.Items.Item(1) = 20

こうすると、コンボボックスの表示が「15」になってしまいます。

その後
処理関数
店舗番号格納変数=cmbStoreList.Items.Item(0)
処理

こんな感じですよろしくおねがいします!

補足日時:2006/03/29 14:03
    • good
    • 0

リストボックス.Items.Item(X)


でいいんじゃないかな

この回答への補足

試してみましたが、Valueではなくて、リスト名が変わってしまいました><

補足日時:2006/03/28 13:56
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!