VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

メニューへ戻ります。 ListBox コントロール関係のメニュー
1.ListBox コントロールに関するワンポイントテクニック集
2.ListBox 内の項目の高さ(行の高さ)を設定する
3.リストボックス内のすべての項目を完全一致・前方一致検索
4.ListBox に複数の項目を指定位置に揃えて表示/表示データを個別に取得
5.リストボックスの指定位置に複数のタブストップ位置を設定
6.ListBox 内の項目の色を個別に設定する(オーナードローによる)
7.ListBox の背景色を1行飛びに設定する(オーナードローによる)
8.テキストファイルを読み込んでリストボックスに表示及びファイルに保存
9.2つのリストボックスのスクロールの同期を取る
10. 
11.
12.
 . 
20.その他、当サイト内に掲載の ListBox コントロールに関するサンプル


3.リストボックス内のすべての項目を完全一致・前方一致検索(19_Lst_04) (旧、SampleNo.105)
1.リストボックス内のすべての項目を完全一致・前方一致検索
2.
3.
4.
5.
6.

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86
Option :[Compare Text] [Explicit On] [Infer On] [Strict On]
Imports :追加なし
参照設定:
追加なし
その他 :
    :
このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので)
必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい)
このページのトップへ移動します。 1.リストボックス内のすべての項目を完全一致・前方一致検索

Public Class Form1

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'"たちつ"を前方一致検索(最初に見つかった分だけ)
    'すべての選択状態を解除する
    ListBox1.ClearSelected()
    Dim x As Integer = -1
    x = ListBox1.FindString("たちつ", x)
    If x <> -1 Then
        ListBox1.SetSelected(x, True)
        MessageBox.Show(x + 1 & " 番目に見つかりました。")
    End If
End Sub

Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
'"たちつ"を完全一致検索(最初に見つかった分だけ)
    'すべての選択状態を解除する
    ListBox1.ClearSelected()
    Dim x As Integer = -1
    x = ListBox1.FindStringExact("たちつ", x)
    If x <> -1 Then
        ListBox1.SetSelected(x, True)
        MessageBox.Show(x + 1 & " 番目に見つかりました。")
    End If
End Sub

Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
'"たちつ"を前方一致検索(すべての項目を検索)
    'すべての選択状態を解除する
    ListBox1.ClearSelected()
    Call sLBSearch(ListBox1, "たちつ")
    MessageBox.Show(ListBox1.SelectedIndices.Count & " 個見つかりました")
End Sub

Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
'"たちつ"を完全一致検索(すべての項目を検索)
    'すべての選択状態を解除する
    ListBox1.ClearSelected()
    Call sLBSearch(ListBox1, "たちつ", 1)
    MessageBox.Show(ListBox1.SelectedIndices.Count & " 個見つかりました")
End Sub

Private Sub sLBSearch(ByVal LBox As ListBox, ByVal SearchStr As String, _
       Optional ByVal Exact As Integer = 0, Optional ByVal sPos As Integer = -1)
'ListBox 内を完全一致・前方一致検索を再帰的に行う関数
    Dim ret As Integer = -1
    If Exact = 1 Then  '完全一致検索
        ret = ListBox1.FindStringExact(SearchStr, sPos)
    Else        '前方一致検索
        ret = ListBox1.FindString(SearchStr, sPos)
    End If
    If ret <= sPos Or ret = -1 Then '見つから無かった場合
        Return
    Else        '見つかった場合
        With LBox
            .SelectionMode = SelectionMode.MultiExtended
            .SetSelected(ret, True)      '見つかった行を選択状態に
            If ret < .Items.Count - 1 Then  '次の検索
                sLBSearch(LBox, SearchStr, Exact, ret)
            Else
                Return
            End If
        End With
    End If
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'テスト用データを表示(たちつてとの部分を色々コメントにしてテストしてください)
    With ListBox1
        .Items.Add("たちつてと")
        .Items.Add("たちつてと")
        .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

End Class

 図1.上記実行結果
 vb2013listbox03_1

注意
上記同様の検索のサンプルは、MSDN にもありますが、データの取得状況により無限ループに入りエラーが発生しますのでご注意下さい。又、Web 上のサンプルの多くはMSDN のサンプルを元に作成されているので同様のバグがあるものがありますので注意して下さい。 (現在は、修正されているかも知れませんが?)

このページのトップへ移動します。 2.


このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5. 



このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)
ListBox  リストボックス 検索 前方一致 完全一致 連続検索 全て検索




このページのトップへ移動します。