C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■85921 / )  Re[3]: comboboxのselectindexについて
□投稿者/ 魔界の仮面弁士 (1490回)-(2017/12/01(Fri) 22:41:28)
No85919 (あ さん) に返信
> あで始まる文字をコンボボックスに表示(カタカナとひらがな含む)。
> 「あり」、「アイス」、「アメリカンドック」
> この3つのみ表示させたいんです。

ComboBox1 自身の中身を入れ替えてしまうと再検索の際に困るので、
「全データ」を管理するためのリストと
「絞込んだデータ」を表示するためのコンボボックスは
別管理にした方が良いと思いますよ。



Imports System.Globalization
Public Class Form1
  Private list As New List(Of String)()

  Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    '元データをコレクション変数に保持しておく
    list.Clear()
    list.Add("あ")
    list.Add("アイス")
    list.Add("アメリカンドック")
    list.Add("イカ")
    list.Add("いす")
    list.Add("いえ")

    'それを ComboBox に表示
    ComboBox1.DropDownStyle = ComboBoxStyle.DropDownList
    ComboBox1.DataSource = list
  End Sub

  Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
    'テキストを書き換えるたびに、
    'リストの内容を先頭一致でフィルタリング
    Dim ci = New CultureInfo("ja-jp").CompareInfo
    Dim opt As CompareOptions
    opt = opt Or CompareOptions.IgnoreWidth   '全角と半角を区別しない
    opt = opt Or CompareOptions.IgnoreKanaType 'ひらがなとカタカナを区別しない
    opt = opt Or CompareOptions.IgnoreCase   '大文字と小文字を区別しない

    Dim txt As String = TextBox1.Text
    ComboBox1.DataSource = list.Where(
      Function(s)
        Return 0 = ci.Compare(Strings.Left(s, txt.Length), txt, opt)
      End Function).ToArray()
  End Sub
End Class

返信 編集キー/


管理者用

- Child Tree -