2

これまでに入力したテキストを含むアイテムのみを表示するようにコンボボックスをフィルタリングする方法がわかりません。

コンボボックスがバインドするデータテーブルを構築する関数は次のとおりです。

Function users() As DataTable
        Dim ds As New DataSet
        Dim dt As DataTable
        Dim dr As DataRow
        Dim idCoulumn As DataColumn
        Dim nameCoulumn As DataColumn

        dt = New DataTable()
        idCoulumn = New DataColumn("ID", Type.GetType("System.Int32"))
        nameCoulumn = New DataColumn("Name", Type.GetType("System.String"))

        dt.Columns.Add(idCoulumn)
        dt.Columns.Add(nameCoulumn)

        dr = dt.NewRow()
        dr("ID") = 1
        dr("Name") = "Zuse, Konrad"
        dt.Rows.Add(dr)

        dr = dt.NewRow()
        dr("ID") = 2
        dr("Name") = "Torvalds, Linus"
        dt.Rows.Add(dr)

        dr = dt.NewRow()
        dr("ID") = 3
        dr("Name") = "Babbage, Charles"
        dt.Rows.Add(dr)

        ds.Tables.Add(dt)

        Return dt

    End Function

「u」と入力した場合に Linus と Zuse のエントリのみを表示するようにプログラムするにはどうすればよいですか?

私はこのようなことを試しましたが、何をすべきかよくわかりません:

Private Sub userKeyUp(ByVal sender As System.Object, ByVal e As System.Windows.Input.KeyEventArgs) Handles cb_user.KeyUp
    cb_user.IsDropDownOpen = True
    cb_user.Items.Filter = Function(item)
                               Return item.ToString().Contains(cb_user.Text.Trim())
                           End Function
End Sub
4

2 に答える 2

0

リンク:

Dim query = (From dr As DataRow In dt.Rows Where dr("Name").ToString.Contains("Linus")).ToArray()

ラムダ:

Dim query = dt.Rows.AsEnumerable.Where(Function(dr) dr("Name").ToString.Contains("Linus")).ToArray()
于 2012-11-12T00:44:35.420 に答える
0

このコントロールを試してくださいhttps://www.nuget.org/packages/THEFilteredComboBox/あなたの場合はそれで十分だと思います

于 2015-07-27T23:18:35.243 に答える