アイテムをデザイン時に定義するには
● ListBoxのアイテムをデザイン時に定義するサンプル

図 ListBoxのアイテムをデザイン時に定義するサンプル
このサンプルは、ListBoxにVisual Studio .NET(VS.NET)の言語を表示させています。ListBoxからアイテムを選択してOKボタンをクリックすると、選択したアイテムが表示されます。このサンプルは、ListBoxのSelectionModeプロパティにMultipleを設定していますので複数のアイテムを選択することができます。複数のアイテムを個別に選択するときは、Ctrlキーを押しながらアイテムをクリックします。連続した範囲を選択するには、Shiftキーを押しながら先頭と最後のアイテムをクリックします。
このサンプルでは、以下のノウハウを習得することができます。
▲ ListBoxのアイテムをデザイン時に定義する方法
▲ ListBoxから選択したアイテムを表示する方法
ListBoxに表示するアイテムをデザイン時に設定するには、ListItemを使用します。ListItemには、TextとValueプロパティがサポートされていますので、ListBoxに表示するテキストと値を個別に設定することができます。行25-28では、Visual Studio .NETの言語を定義しています。ListItemのTextには言語のフル名称、Valueには略称を設定しています。行24では、SelectionModeプロパティにMultipleを設定していますのでListBoxから複数のアイテムを選択することができます。SelectionModeにSingleを設定したときは1個のアイテムしか選択できません。
23: <asp:ListBox id="lstVsNet"
runat="server"
24:
SelectionMode="Multiple">
25: <asp:ListItem Text="Visual
Basic .NET" Value="VB.NET" />
26: <asp:ListItem
Text="Visual C++ .NET" Value="C++.NET" />
27: <asp:ListItem
Text="Visual C#" Value="C#.NET" />
28: <asp:ListItem
Text="Visual J#" Value="J#.NET" />
29:
</asp:ListBox>
このサンプルでは、ListBoxから選択したアイテムを表示するのにPage_Loadイベントを使用しています。ListBoxのSelectionModeにMultipleを設定して、複数のアイテムを選択できるようにしたときは、OnSelectedIndexChangedイベントの代わりにPage_Loadイベントを使用します。SelectionModeにSingleを設定して1個のアイテムのみ選択できるようにしたときは、OnSelectedIndexChangedイベントを使用することもできます。
複数アイテムの選択を許可したときは、ページをポストバックさせるのにButtonを使用します。1個のアイテムのみ許可したときは、アイテムを選択したときにポストバックさせるためにAutoPostBackプロパティにTrueを設定します。
OKボタンをクリックするとページがポストバックされて、Page_Loadイベントに制御が渡ります。行5のIfでは、IsPostBackプロパティを参照してページがポストバックされたか調べています。ポストバックされたときは、行8-13のFor Each…NextループでListBoxのItemsコレクションからListItemを取り出します。ListItemのSelectedプロパティを参照してアイテムが選択されているか調べます。アイテムが選択されているときは、LabelのTextプロパティにListItemのTextとValueの値を設定して表示します。
4: Sub Page_Load()
5: If IsPostBack Then
6: lblMessage.Text =
"<hr>"
7: Dim li As ListItem
8: For Each li in lstVsNet.Items
9: If
li.Selected Then
10:
lblMessage.Text &= String.Format("<li>{0}
(<b>{1}</b>)", _
11:
li.Text, li.Value)
12: End If
13: Next
14: End If
15: End Sub