これもあんまり難しいことないですね。
MSDN フォーラムの記事で 以下のものを見つけたので、Button1 を押下した後に、
CheckedListBox を選択して、キーで M とか打ってみると Moo さんが最初に選択される。
CheckedListBoxに半角スペースで始まるItemを入れるとスペースキーでの挙動がおかしい
たしかに、これはこれで便利な気がします。
あと、個人的に興味深かったのは、CheckedItems や CheckedIndices 、SelectedItems や SelectedIndices プロパティの型ですね。
■参考文献
CheckedListBox クラス
ListBox.ObjectCollection クラス
CheckedListBox.CheckedItemCollection クラス
CheckedListBox.CheckedIndexCollection クラス
ListBox.SelectedObjectCollection クラス
ListBox.SelectedIndexCollection クラス
■実行画像
Button1 押下時
Button2 押下時
Public Class CheckedListBoxTest
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'' 複数行のサポート
Me.CheckedListBox1.MultiColumn = True
Me.CheckedListBox1.ColumnWidth = 100
Me.CheckedListBox1.Items.Clear()
' 表示するデータ
Dim data As String() = _
{"中博俊", "じゃんぬねっと", "夏椰", "なおこ(・∀・)", _
"まゆりん", "Jitta", "trapemiya", "やねうらお", "囚人", _
"Moo", "maint", "επιστημη(えぴすてーめー)", _
"とっちゃん", "おぎわら", "えムナウ", "買太郎", _
"むたぐち", "aera", "taos", "ue", "ognac", _
"108bones", "ghost_shell", "黒龍", "koka", "inogucci", _
"ヽ(゚∀。)ノうぇね", "アクア", "n", "zee", "十郎", _
"Pandora", "刈歩 菜良", "R・田中一郎", "十兵衛(諸農)", _
"まさぶん", "まどか", "ゆき", "恣意の", "ひろえむ", _
"taka", "c", "DS7", "w", "沢渡真雪", "THREE-ONE", _
"Blue", "RAPT", "初音玲", "のぶさん", "ぽぴ王子", "g", "a", "s"}
Me.CheckedListBox1.Items.AddRange(data)
' なおこを削除
Me.CheckedListBox1.Items.Remove("なおこ(・∀・)")
' なおこをえぴすさんの後に挿入
Me.CheckedListBox1.Items.Insert(11, "なおこ(・∀・)")
' なおこのチェック状態を設定
Me.CheckedListBox1.SetItemCheckState(11, CheckState.Checked)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Me.CheckedListBox1.MultiColumn = False
Me.CheckedListBox1.ColumnWidth = 0
Me.CheckedListBox1.Items.Clear()
'' 項目選択時にチェックボックスにチェックが入ったりするようにする
Me.CheckedListBox1.CheckOnClick = True
Me.CheckedListBox1.BeginUpdate()
Me.CheckedListBox1.Items.Add("えでん", False) '未チェック
Me.CheckedListBox1.Items.Add("ふじこ", True) 'チェック
Me.CheckedListBox1.Items.Add("オット", CheckState.Indeterminate) 'CheckStateでの指定もOK
Me.CheckedListBox1.EndUpdate()
' ふじこを最初に選択する
Me.CheckedListBox1.SetSelected(1, True)
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
'' すべてのアイテムを取得
Console.WriteLine(StrDup(50, "="c))
Console.WriteLine("アイテム数:" & Me.CheckedListBox1.Items.Count.ToString())
For Each listitm As Object In Me.CheckedListBox1.Items 'ListBox.ObjectCollection
Console.WriteLine(Convert.ToString(listitm))
Next
'' チェックされているアイテムを取得
Console.WriteLine(StrDup(50, "="c))
Console.WriteLine("チェックされているアイテム数:" & Me.CheckedListBox1.CheckedItems.Count.ToString())
For Each checkedlistitm As Object In Me.CheckedListBox1.CheckedItems 'CheckedListBox.CheckedItemCollection
'Checked または Indeterminate である項目だけ
Console.WriteLine(Convert.ToString(checkedlistitm))
Next
'' チェックされているインデックスを取得
Console.WriteLine(StrDup(50, "="c))
Console.WriteLine("チェックされているインデックス数:" & Me.CheckedListBox1.CheckedIndices.Count.ToString())
For Each checkedlistitm As Object In Me.CheckedListBox1.CheckedIndices 'CheckedListBox.CheckedIndexCollection
'Checked または Indeterminate である項目だけ
Console.WriteLine(Convert.ToString(checkedlistitm))
Next
'' チェックされていないアイテムを取得
Console.WriteLine(StrDup(50, "="c))
Dim uncheckedCount As Integer
For index As Integer = 0 To Me.CheckedListBox1.Items.Count - 1
If Me.CheckedListBox1.GetItemCheckState(index) = CheckState.Unchecked Then
Console.WriteLine(Convert.ToString(Me.CheckedListBox1.Items(index)))
uncheckedCount += 1
End If
Next
Console.WriteLine("チェックされていないアイテム数:" & uncheckedCount.ToString())
'' 項目選択されているアイテムを取得
Console.WriteLine(StrDup(50, "="c))
Console.WriteLine("項目選択されているアイテム数:" & Me.CheckedListBox1.SelectedItems.Count.ToString())
For Each selectedlistitm As Object In Me.CheckedListBox1.SelectedItems 'ListBox.SelectedObjectCollection
Console.WriteLine(Convert.ToString(selectedlistitm))
Next
'' 項目選択されているアイテムを取得
Console.WriteLine(StrDup(50, "="c))
Console.WriteLine("項目選択されているインデックス数:" & Me.CheckedListBox1.SelectedIndices.Count.ToString())
For Each selectedIndex As Integer In Me.CheckedListBox1.SelectedIndices 'ListBox.SelectedIndexCollection
'Checked または Indeterminate である項目だけ
Console.WriteLine(Convert.ToString(selectedIndex))
Next
End Sub
End Class