Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将项目从一个lisbox删除到另一个vb.net_Vb.net - Fatal编程技术网

将项目从一个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