将项目从一个lisbox删除到另一个vb.net
我试图从一个列表框中选择项目,删除它们,然后单击一个按钮并将它们插入另一个列表框。我被卡住了,因为它删除了项目,但它们没有移动到第二个列表框将项目从一个lisbox删除到另一个vb.net,vb.net,Vb.net,我试图从一个列表框中选择项目,删除它们,然后单击一个按钮并将它们插入另一个列表框。我被卡住了,因为它删除了项目,但它们没有移动到第二个列表框 Public Class frmShop Private Sub frmShop_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.BackColor = Color.LightGray With lstStock.Items
Public Class frmShop
Private Sub frmShop_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.BackColor = Color.LightGray
With lstStock.Items
.Add("Orange Juice")
.Add("Pepper")
.Add("Ham")
.Add("Butter")
.Add("Eggs")
.Add("Bread")
.Add("Tea")
.Add("Coffee")
End With
End Sub
Private Sub btnAdd_Click(sender As Object, e As EventArgs) Handles btnAdd.Click
lstStock.Items.Add(txtAdd.Text)
End Sub
Private Sub btnClose_Click(sender As Object, e As EventArgs) Handles btnClose.Click
Me.Close()
End Sub
Private Sub btnMoveOver_Click(sender As Object, e As EventArgs) Handles btnMoveOver.Click
lstStock.Items.RemoveAt(lstStock.SelectedIndex)
lstBasket.Items.Add(lstStock.SelectedIndex)
If lstStock.SelectedIndex = -1 Then
MessageBox.Show("You must select an item", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
End If
End Sub
End Class
问题是您没有移动列表框的项 您可以在
btnmovover
上使用以下解决方案,而不是当前代码:
Private Sub btnMoveOver_Click(sender As Object, e As EventArgs) Handles btnMoveOver.Click
If lstStock.SelectedItems.Count < 1 Then
MessageBox.Show("You must select an item", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit Sub
End If
lstBasket.Items.Add(lstStock.Items(lstStock.SelectedIndex))
lstStock.Items.RemoveAt(lstStock.SelectedIndex)
End Sub
在该事件中,如果库存列表框中没有更多项目,则按钮将被禁用
在
if
语句中使用的解决方案:
Private Sub btnMoveOver_Click(sender As Object, e As EventArgs) Handles btnMoveOver.Click
If lstStock.SelectedIndex < 0 Then
MessageBox.Show("You must select an item", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit Sub
End If
lstBasket.Items.Add(lstStock.Items(lstStock.SelectedIndex))
lstStock.Items.RemoveAt(lstStock.SelectedIndex)
End Sub
Private Sub btnMoveOver\u Click(发送者作为对象,e作为事件参数)处理btnMoveOver。单击
如果lstStock.SelectedIndex<0,则
MessageBox.Show(“您必须选择一个项目”,“信息”,MessageBoxButtons.OK,MessageBoxIcon.叹号)
出口接头
如果结束
lstbarket.Items.Add(lstStock.Items(lstStock.SelectedIndex))
lstStock.Items.RemoveAt(lstStock.SelectedIndex)
端接头
它们不会移动到第二个列表框,因为您尚未编写将删除的项目添加到第二个列表框的代码。对于该部分,您的解决方案有效。你能给我一个提示吗?当我的库存列表框中没有更多的项目时,如何创建if语句?在我的if语句中,当我从库存列表中删除项目并将其插入购物篮时,我会收到一条消息“你必须选择一个项目”。你能解释一下原因吗?很抱歉询问,但我想了解出了什么问题?您选择的项目已被删除,因此if语句中没有选择的项目(-1)。如果您将If语句移动到按钮事件的顶部,它应该可以工作,但是您必须确保在没有项的情况下退出子项。我现在看到了,因为如果我不这样做,ArgumentOutOfRangeException将出现。谢谢。如果你不介意的话,最后一个问题。我们如何使用selectedIndex而不是selectedItems生成if语句。我们可以使用try-catch异常吗?
Private Sub btnMoveOver_Click(sender As Object, e As EventArgs) Handles btnMoveOver.Click
If lstStock.SelectedIndex < 0 Then
MessageBox.Show("You must select an item", "Information", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
Exit Sub
End If
lstBasket.Items.Add(lstStock.Items(lstStock.SelectedIndex))
lstStock.Items.RemoveAt(lstStock.SelectedIndex)
End Sub