我有一个查询,其中包含我放入checkedlistbox的名称列表。 但我也想用它发送我的表密钥。但与此同时,我不想表现出来。
当前代码:
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
我将使用此表键来查询搜索。我想阻止的是制作第二个Linq。
如何使用checkedlistbox发送“隐藏”数据(这将是表格密钥),以便我可以从代码中获取密钥?
答案 0 :(得分: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
另一种方法是将查询结果存储在Dictionary
中,稍后只需查找Names
< - > tableKey
对。