【发布时间】:2020-04-12 02:53:42
【问题描述】:
我正在使用 CheckBoxes 中的一些 CheckedListItems,并且在确定何时通过其索引位置选中和/或取消选中特定选中产品时遇到问题。 我从 MsgBox 调试中知道,如果我选择 Product All purpose Cleaner 或 Cleaning Wipes,它会调用这两种方法的 MsgBoxes,尽管我尝试使用仅针对该特定产品执行的逻辑。不知何故,它认为我已经选择了这两个项目?
所以基本上我正在尝试这样做:
如果 CheckedListBox 中的第 0 项被选中 调用符合菜单以获得所需的数量,然后返回订购菜单。 未选中 CheckedListBox 中的 ElseIF 项目零 从当前订单中删除它。
这实际上是对我的 CheckedListBox 中的所有项目进行冲洗和重复。我怀疑 VB.NET 导致我的代码“失败”,它认为我选择的所有项目都是相同的,尽管我试图阻止这种情况。
我可以对此有一些想法吗?
谢谢。
Private Sub CleaningProductsList_SelectedIndexChanged(sender As Object, e As EventArgs) Handles CleaningProductsList.SelectedIndexChanged
Dim allPurposeCleaner = New AllPurposeCleaner()
Dim cleaningCloths = New cleaningCloths()
' If checked.
If CleaningProductsList.GetItemChecked(0) = True Then
isChecked = True
Me.Hide()
' MsgBox("All Purpose Cleaner Selected")
AmountMenue.setGivenProduct(allPurposeCleaner)
AmountMenue.Show()
' If unchecked.
ElseIf CleaningProductsList.GetItemChecked(0) = False Then
isChecked = False
' MsgBox("All Purpose Cleaner UnSelected ")
MsgBox(CleaningProductsList.GetItemChecked(0).ToString + " ALLPURPOSE UNCHECKED")
AmountMenue.removedGivenProduct(allPurposeCleaner)
End If
' If checked.
If CleaningProductsList.GetItemChecked(1) = True Then
Me.Hide()
AmountMenue.setGivenProduct(cleaningCloths)
MsgBox("cleaning cloths Selected ")
AmountMenue.Show()
' If unchecked.
ElseIf CleaningProductsList.GetItemChecked(1) = False And CleaningProductsList.CheckOnClick = False Then
MsgBox("cleaning cloths UnSelected ")
MsgBox(CleaningProductsList.GetItemChecked(2).ToString + " Cleaning Cloths UNCHECKED")
isChecked = False
AmountMenue.removedGivenProduct(cleaningCloths)
End If
End Sub
【问题讨论】:
-
如果
CleaningProductsList是CheckedListBox那么SelectedIndexChanged是首先要处理的错误事件。CheckListBox中的选择与常规ListBox中的选择方式完全相同,并且与检查毫无关系。如果您关心检查,请处理与检查相关的事件,即ItemCheck。请注意,该事件是在更改发生之前引发的。
标签: vb.net list listbox toggle checkedlistbox