当列表框包含从保存文件加载的项目时,防止将重复项添加到列表框的问题
Issue Preventing Duplicates from Being Added to a Listbox When Listbox Contains Items Loaded from a Save File
我遇到了阻止将重复项添加到列表框的问题。
- 我的 Windows 表单有 2 个列表框
- 表单设计为当用户单击按钮时,他们在第一个框中选中的项目将添加到第二个框中
- 下面我添加到 "add" 按钮的代码旨在防止在框 2 中已存在相同项目的情况下将框 1 中选中的项目添加到框 2。
- 我的代码的问题是,如果方框 2 包含从保存文件加载的项目,它不会阻止重复项被添加到方框 2。
关于如何解决这个问题有什么想法吗?
Public Sub additems_Click(sender As Object, e As EventArgs) Handles additems.Click
Dim itemChecked As Object
Dim alreadyonkey As Boolean
Dim duplicates As Integer = 0
If box1.CheckedItems.Count > 0 Then
For Each itemChecked In box1.CheckedItems
alreadyadded = False
'Check if item selected has already been added to box2
If box2.Items.Contains(itemChecked) = True Then
alreadyadded = True
duplicates = duplicates + 1
Else
alreadyadded = False
End If
'Add item if all criteria met
If box2.Items IsNot "" And alreadyadded = False Then
box2.Items.Add(itemChecked)
End If
Next
If duplicates > 0 Then
MsgBox("One or more of the items you are trying to add have already been added.", MsgBoxStyle.Critical, "Item has already been added")
alreadyadded = False
End If
End If
结束子
我发现了我的代码的问题...这个问题主要是因为需要使用嵌套的 For Each 循环来一次比较 box1 中的每个项目和 box2 中的每个项目,并且需要将项目发送到字符串变量并使用 "String.Equals".
进行比较
Public Sub additems_Click(sender As Object, e As EventArgs) Handles additems.Click
Dim itemChecked As Object
Dim alreadyadded As Boolean
Dim duplicates As Integer = 0
If box1.CheckedItems.Count > 0
For Each itemChecked In box1.CheckedItems
Dim itemtoadd As String = itemChecked.ToString
'Check if item selected has already been added to box2
For Each item In box2.Items
Dim box2item As String = item.ToString
If String.Equals(Trim(itemtoadd), Trim(box2item)) = True Then
alreadyadded = True
duplicates = duplicates + 1
Else
End If
Next
'Add item if all criteria met
If itemChecked IsNot "" And alreadyadded = False Then
box2.Items.Add(itemChecked)
End If
Next
If duplicates > 0 Then
MsgBox("One or more of the items you are trying to add have already been added.", MsgBoxStyle.Critical, "Item hase already been added")
alreadyadded = False
duplicates = 0
End If
End If
我遇到了阻止将重复项添加到列表框的问题。
- 我的 Windows 表单有 2 个列表框
- 表单设计为当用户单击按钮时,他们在第一个框中选中的项目将添加到第二个框中
- 下面我添加到 "add" 按钮的代码旨在防止在框 2 中已存在相同项目的情况下将框 1 中选中的项目添加到框 2。
- 我的代码的问题是,如果方框 2 包含从保存文件加载的项目,它不会阻止重复项被添加到方框 2。
关于如何解决这个问题有什么想法吗?
Public Sub additems_Click(sender As Object, e As EventArgs) Handles additems.Click
Dim itemChecked As Object
Dim alreadyonkey As Boolean
Dim duplicates As Integer = 0
If box1.CheckedItems.Count > 0 Then
For Each itemChecked In box1.CheckedItems
alreadyadded = False
'Check if item selected has already been added to box2
If box2.Items.Contains(itemChecked) = True Then
alreadyadded = True
duplicates = duplicates + 1
Else
alreadyadded = False
End If
'Add item if all criteria met
If box2.Items IsNot "" And alreadyadded = False Then
box2.Items.Add(itemChecked)
End If
Next
If duplicates > 0 Then
MsgBox("One or more of the items you are trying to add have already been added.", MsgBoxStyle.Critical, "Item has already been added")
alreadyadded = False
End If
End If
结束子
我发现了我的代码的问题...这个问题主要是因为需要使用嵌套的 For Each 循环来一次比较 box1 中的每个项目和 box2 中的每个项目,并且需要将项目发送到字符串变量并使用 "String.Equals".
进行比较Public Sub additems_Click(sender As Object, e As EventArgs) Handles additems.Click
Dim itemChecked As Object
Dim alreadyadded As Boolean
Dim duplicates As Integer = 0
If box1.CheckedItems.Count > 0
For Each itemChecked In box1.CheckedItems
Dim itemtoadd As String = itemChecked.ToString
'Check if item selected has already been added to box2
For Each item In box2.Items
Dim box2item As String = item.ToString
If String.Equals(Trim(itemtoadd), Trim(box2item)) = True Then
alreadyadded = True
duplicates = duplicates + 1
Else
End If
Next
'Add item if all criteria met
If itemChecked IsNot "" And alreadyadded = False Then
box2.Items.Add(itemChecked)
End If
Next
If duplicates > 0 Then
MsgBox("One or more of the items you are trying to add have already been added.", MsgBoxStyle.Critical, "Item hase already been added")
alreadyadded = False
duplicates = 0
End If
End If