1

チェックリストボックスに入れた名前のリストを含むクエリがあります。ただし、テーブルキーも一緒に送信したいと思います。しかし同時に、私はそれを見せたくありません。

現在のコード:

        Dim Querynames = (From rec In db.table
                         Select rec.tableKey, rec.Names).ToList

        For Each item In Querynames 
          'Need to send my table key with each name
            CheckedListBox1.Items.Add(item.Names)
        Next

このテーブルキーを使用して検索をクエリします。私が防ぎたいのは、2番目のLinqを作成することです。

チェックリストボックスを使用して「非表示」データ(テーブルキーになります)を送信して、コードからキーにアクセスできるようにするにはどうすればよいですか?

4

1 に答える 1

1

CheckedListBoxだけでなく、オブジェクト全体を に追加する必要がありますNames

For Each item In Querynames 
    CheckedListBox1.Items.Add(item)
Next

次に、DisplayMemberプロパティを設定する必要があります。

CheckedListBox1.DisplayMember = "Names"

そのためCheckedListBox、プロパティが表示されNamesます。

おそらく、匿名型ではなく通常のクラスを使用したいので、アイテムをキャストしてtableKeyプロパティにアクセスできます。


次の例を検討してください。

Sub Main
    Dim clb = new System.Windows.Forms.CheckedListBox()

    Dim f = new System.Windows.Forms.Form()
    f.Controls.Add(clb)

    Dim items = new Item() { new Item() with {.TableKey = "Foo", .Names = "Foobar"},
                             new Item() with {.TableKey = "ABC", .Names = "ABCDEFG"}}

    For Each item in items
        clb.Items.Add(item)
    next

    clb.DisplayMember = "Names"

    f.ShowDialog()

    Dim message = String.Join(" and ", clb.CheckedItems.Cast(Of Item).Select(Function(i) i.TableKey))
    System.Windows.Forms.MessageBox.Show(message)
End Sub

Class Item
    Public Property TableKey As String 
    Public Property Names As String 
End Class

もう 1 つの方法は、クエリ結果を に格納しDictionary、後でNames<->tableKeyペアを検索することです。

于 2012-09-27T11:23:32.193 に答える