单击 ListBox1 中的一个项目,ListBox2 中的项目也同时在 vb 中被选中
Click an item in ListBox1 and ListBox2 item is also selected simultaneously in vb
基本上,当我有 2 个列表框时,当你 select 列表框中的一个项目时,它会突出显示。
我想要做的是 select 来自任何列表框的项目,它突出显示相应的数据。
这是我试过的方法,但显然这只是一个使程序崩溃的循环。
Private Sub lstOrders_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstOrders.SelectedIndexChanged
lstTotalsEachOrder.SetSelected(lstOrders.SelectedIndex, True)
End Sub
Private Sub lstTotalsEachOrder_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstTotalsEachOrder.SelectedIndexChanged
lstOrders.SetSelected(lstTotalsEachOrder.SelectedIndex, True)
End Sub
任何帮助将不胜感激:)
使用布尔标志。
Dim Selecting As Boolean = False
Private Sub lstOrders_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstOrders.SelectedIndexChanged
If Not Selecting Then
Selecting = True
lstTotalsEachOrder.SetSelected(lstOrders.SelectedIndex, True)
Selecting = False
End If
End Sub
Private Sub lstTotalsEachOrder_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstTotalsEachOrder.SelectedIndexChanged
If Not Selecting Then
Selecting = True
lstOrders.SetSelected(lstTotalsEachOrder.SelectedIndex, True)
Selecting = False
End If
End Sub
只需保留一个标记,即可知道您何时 "handling yourself" 选择
Private isManuallyHandled As Boolean = False
Private Sub ListBoxes_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstOrders.SelectedIndexChanged, lstTotalsEachOrder.SelectedIndexChanged
If isManuallyHandled Then Return
Dim source = DirectCast(sender, ListBox)
Dim target = If(source Is lstOrders, lstTotalsEachOrder, lstOrders)
isManuallyHandled = True
target.SelectedIndex = source.SelectedIndex ' simpler than SetSelected
isManuallyHandled = False
End Sub
基本上,当我有 2 个列表框时,当你 select 列表框中的一个项目时,它会突出显示。
我想要做的是 select 来自任何列表框的项目,它突出显示相应的数据。
这是我试过的方法,但显然这只是一个使程序崩溃的循环。
Private Sub lstOrders_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstOrders.SelectedIndexChanged
lstTotalsEachOrder.SetSelected(lstOrders.SelectedIndex, True)
End Sub
Private Sub lstTotalsEachOrder_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstTotalsEachOrder.SelectedIndexChanged
lstOrders.SetSelected(lstTotalsEachOrder.SelectedIndex, True)
End Sub
任何帮助将不胜感激:)
使用布尔标志。
Dim Selecting As Boolean = False
Private Sub lstOrders_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstOrders.SelectedIndexChanged
If Not Selecting Then
Selecting = True
lstTotalsEachOrder.SetSelected(lstOrders.SelectedIndex, True)
Selecting = False
End If
End Sub
Private Sub lstTotalsEachOrder_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lstTotalsEachOrder.SelectedIndexChanged
If Not Selecting Then
Selecting = True
lstOrders.SetSelected(lstTotalsEachOrder.SelectedIndex, True)
Selecting = False
End If
End Sub
只需保留一个标记,即可知道您何时 "handling yourself" 选择
Private isManuallyHandled As Boolean = False
Private Sub ListBoxes_SelectedIndexChanged(sender As Object, e As EventArgs) Handles lstOrders.SelectedIndexChanged, lstTotalsEachOrder.SelectedIndexChanged
If isManuallyHandled Then Return
Dim source = DirectCast(sender, ListBox)
Dim target = If(source Is lstOrders, lstTotalsEachOrder, lstOrders)
isManuallyHandled = True
target.SelectedIndex = source.SelectedIndex ' simpler than SetSelected
isManuallyHandled = False
End Sub