Vb.net 如何防止向列表框中添加重复数据?
我在lst1中有一堆操作系统项,我想将它们放入lst2中,但不在每个列表框中重复它们 我正在使用的界面: 这是有效的,但你可能需要它来理解我的怀疑Vb.net 如何防止向列表框中添加重复数据?,vb.net,listbox,Vb.net,Listbox,我在lst1中有一堆操作系统项,我想将它们放入lst2中,但不在每个列表框中重复它们 我正在使用的界面: 这是有效的,但你可能需要它来理解我的怀疑 Dim dtTa_Enc As DataTable = New DataTable("Ta_Enc") Dim dsTa As DataSet = New DataSet("Ta_E") Dim adapter As New MySqlDataAdapter Dim ds As DataSet = New DataSet adapter.Sel
Dim dtTa_Enc As DataTable = New DataTable("Ta_Enc")
Dim dsTa As DataSet = New DataSet("Ta_E")
Dim adapter As New MySqlDataAdapter
Dim ds As DataSet = New DataSet
adapter.SelectCommand = New MySqlCommand
adapter.SelectCommand.Connection = connection
adapter.SelectCommand.CommandText = query
connection.Open()
adapter.Fill(ds, "tables")
connection.Close()
lst1.DataSource = ds.Tables("tables")
lst1.DisplayMember = "name"
lst1.ValueMember = "codta"
dtTa_Enc.Columns.Add("codta")
dtTa_Enc.Columns.Add("name")
dsTa.Tables.Add(dtTa_Enc)
lst2.DataSource = dsTa.Tables("Tables")
lst2.DisplayMember = "name"
lst2.ValueMember = "codta"
dtTa_Enc.Rows.Add(lst1.ValueMember, lst1.GetItemText(lst1.SelectedItem))
怀疑:
现在,用户按下一个按钮,将其所选项目lst1添加到lst2。容易的!但是,如果他试图添加相同的项目,该怎么办。VB.Net能阻止他这么做吗
If not dtTa_Enc.find("codTa = " + lst1.valuemember) Then
dtTa_Enc.Rows.Add(lstTabelas.ValueMember, lstTabelas.GetItemText(lstTabelas.SelectedItem))
End If
您可以通过lst2进行枚举,以确定是否有任何值与所选项目相匹配,
lst1.SelectedItem
所以循环
Dim found As Boolean = False
For Each itm As String in lst2.Items
If itm = lst1.SelectedItem Then
found = True
End If
Next
If Not found Then
'Add it.
End If
或者您可以简单地使用Contains
方法:
If Not lst2.Items.Contains(lst1.SelectedItem) Then
'Add it.
End if.
在添加事件处理程序下,可以在开始处放置一些逻辑,以防止添加重复项
Dim lst1Selected As String = CType(lst1.SelectedItem, DataRowView)("name").ToString
Dim flag As Integer = 0
For Each item As Object In lst2.Items
Dim istr As String = CType(item, DataRowView)("name").ToString
If istr = lst1Selected Then
flag = 1
Exit For
End If
Next
If flag = 1 Then
Exit Sub
End If
对这段代码的修改不起作用,但这是我迄今为止发现的最好的代码:谢谢你的帮助,亚历克斯!但是您的第一个解决方案给了我一个例外:“将'DataRowView'类型转换为'String'类型无效”您的最后一个解决方案虽然运行,但lst2仍然收到重复的“项”。我认为我们正在接近,但不是这样。因为您的解决方案给了我这个例外:“将'DataRowView'类型转换为'String'类型无效”现在,你的代码工作得很好。非常感谢你,乔D