1.ComboBox コントロールに関するワンポイントテクニック集(17_Cbo_01) (旧、SampleNo.175) |
下記プログラムコードに関する補足・注意事項 動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86 Option :[Compare Text] [Explicit On] [Infer On] [Strict On] Imports :追加なし 参照設定:追加なし その他 : : このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので) 必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい) |
1.ComboBoxに項目を書き込む |
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click '01.ComboBox に項目を書き込む '通常登録件数の少ない場合等は、Form1_Load イベントに直接書く事が多いかと。 With ComboBox1 .Items.Add("アワビ") .Items.Add("イカ") .Items.Add("イクラ") .Items.Add("ウニ") .Items.Add("エビ") .Items.Add("たこ") .Items.Add("たまご") .Items.Add("鉄火巻き") .Items.Add("トロ") .Items.Add("ハマチ") .Items.Add("マグロ") End With End Sub VB6.0 や VBA の場合は、Combo1.AddItem "アワビ" のように、AddItem メソッドで項目書き込んでいましたが、VB2005 以降では、Items.Add メソッドを使用します。 ComboBox クラスのメンバーを調べても、Add ではじまるメソッドやプロパティが見つからないので最初はとまどうかも。 |
2.テキストボックスに最初に表示して置く項目を設定 |
下記のように初期値に設定したい項目や説明分・タイトル等を、Text プロパティを使って書き込みます。 通常は、最初に項目を書き込んだ時に一緒に設定します。 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click '02.テキストボックスに最初に表示して置く項目を設定 Debug.Print(ComboBox1.SelectedIndex.ToString) ' -1 (何も記入されていない場合は、-1 が返ります) '初期値を設定したい場合はすでに登録済みの項目を記入 ComboBox1.Text = "トロ" Debug.Print(ComboBox1.SelectedIndex.ToString) ' 8 (トロの SelectedIndex が返ります) '説明文やタイトルを表示するような場合 ComboBox1.Text = "メニューを選択して下さい。" End Sub 上記のテスト結果のように既に登録されている項目を設定すると、ComboBox1.SelectedIndex の値が登録されている項目の Indexを返します。 |
3.ComboBox の指定位置に項目を追加挿入する |
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click '03.ComboBox の指定位置に項目を追加挿入する ComboBox1.Items.Add("最後の位置に追加") ComboBox1.Items.Insert(0, "最初の位置に追加") ComboBox1.Items.Insert(4, "5項目目に追加") End Sub 図1.上記実行結果 |
4.ComboBox の項目を削除する |
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click '04.ComboBox の項目を削除する 'ComboBox 内の指定したインデックス位置の項目を削除する場合 ComboBox1.Items.RemoveAt(3) '指定した項目を ComboBox から削除する場合 ComboBox1.Items.Remove("鉄火巻き") 'ComboBox からすべての項目を削除する場合 ComboBox1.Items.Clear() End Sub |
5.ComboBox 内の指定の項目を書き換える |
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click '05.ComboBox 内の指定の項目を書き換える 'ComboBox 内の指定の項目を書き換える(7項目目の[たまご]をたまご焼きに書き換える) ComboBox1.Items(6) = "たまご焼き" End Sub |
6.選択されている項目を取得する |
Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click '06.選択されている項目を取得する If ComboBox1.SelectedItem Is Nothing Then MessageBox.Show("項目がが選択されていません。") Else Dim si As String = ComboBox1.SelectedItem.ToString() MessageBox.Show(si & "が選択されました。") End If End Sub |
7.選択されている項目のインデックスを取得する |
Private Sub Button7_Click(sender As Object, e As EventArgs) Handles Button7.Click '07.選択されている項目のインデックスを取得する If ComboBox1.SelectedIndex = -1 Then MessageBox.Show("項目がが選択されていません。") Else Dim si As Integer = ComboBox1.SelectedIndex MessageBox.Show(si.ToString() & " が選択されました。") End If End Sub |
8.ComboBox 内の項目を検索し見つかれば選択する |
Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click '08.ComboBox 内の項目を検索し見つかれば選択する 'FindString メソッド:指定された文字列で始まる ComboBox 内の、最初の項目のインデックスを返します。 '前方一致検索をするような場合に使用する("" を検索すると 0 が返るので注意) Dim x As Integer = ComboBox1.FindString("たま") ' X = 6 If x = -1 Then MessageBox.Show("(x)項目が見つかりません") Else ComboBox1.SelectedIndex = x End If 'FindStringExact メソッド:指定した文字列と厳密に一致する項目を検索します。 '完全一致検索する場合に使用する Dim x1 As Integer = ComboBox1.FindStringExact("たま") ' X1 = -1 If x1 = -1 Then MessageBox.Show("(x1)項目が見つかりません") Else ComboBox1.SelectedIndex = x1 End If End Sub |
9.登録されていない項目だけを調べて(検索して)追加書き込みする |
Private Sub Button9_Click(sender As Object, e As EventArgs) Handles Button9.Click '09.登録されていない項目だけを調べて(検索して)追加書き込みする With ComboBox1 Dim x As Integer = -1 Dim itmDat As String = .Text 'TextBox1.Text If itmDat.Length > 0 Then x = .FindStringExact(itmDat, x) If x <> -1 Then MessageBox.Show("すでに登録されています") .Text = "" Else If MessageBox.Show("追加登録しますか?", "追加登録", _ MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.Yes Then .Items.Add(itmDat) .Text = "" End If End If End If End With End Sub |
10.ドロップダウンリストの表示項目数を変更する |
Private Sub Button10_Click(sender As Object, e As EventArgs) Handles Button10.Click '10.ドロップダウンリストの表示項目数を変更する ComboBox1.DropDownStyle = ComboBoxStyle.DropDown '※ Windows Vista 以降では IntegralHeight プロパティの値を False に設定しておかないと有効にならない。 ComboBox1.IntegralHeight = False Debug.Print(ComboBox1.MaxDropDownItems.ToString) '既定値 = 8 ComboBox1.MaxDropDownItems = 4 'ドロップダウン部分に表示される項目数を4に設定 End Sub |
11.ドロップダウンリストの表示・非表示をプログラムから実行 |
Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click '11.ドロップダウンリストの表示・非表示をプログラムから実行 ComboBox1.DropDownStyle = ComboBoxStyle.DropDown ComboBox1.DroppedDown = Not ComboBox1.DroppedDown End Sub |
12.ドロップダウンリスト部の表示幅を変更する |
Private Sub Button12_Click(sender As Object, e As EventArgs) Handles Button12.Click '12.ドロップダウンリスト部の表示幅を変更する ComboBox1.DropDownWidth += 50 End Sub |
13.ComboBox にオートコンプリート機能を設定する |
通常は、初期設定の場面で設定して下さい。 Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click '13.ComboBox にオートコンプリート機能を設定する 'オートコンプリートの設定(VB2005からの機能) ComboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend 'オートコンプリートで使用する文字列のソースを登録済みのリストに設定(別途、読み込んだテキストファイルでも可) ComboBox1.AutoCompleteSource = AutoCompleteSource.ListItems End Sub 図2.上記実行結果 |
14. |
15. |
16. |
17. |
18. |
検索キーワード及びサンプルコードの別名(機能名) |