如何从多个列表框中删除相同的项目?

时间:2016-09-25 18:16:41

标签: vb.net

从多选列表框中删除项目时遇到问题。我会尽力解释我的前端和逻辑。请让我知道获得输出的正确方法。

我需要将新主题添加到列表框中。我可以选择多个项目添加到其中。我有3个列表框第一个列表框是用于持有主要科目。第二个是持有选修科目。我有两个文本框将数据提供给列表框,当按下按钮或输入键时,将添加文本框中的项目。

第三个列表框已停用。它从majorsub和optsubs列表框中获取项目。这意味着如果我添加10个主要科目和5个可选科目,那么第3个列表将保留这15个科目。现在我可以轻松地从一个列表中进行多选并删除它。单独删除不是问题。

我关注的是 - 一旦我从这两个列表中选择了项目并单击删除按钮,它就必须从第三个列表中搜索相同的项目,并将其从此列表中删除。

我该怎么做?请帮助我。

Add items in list 1 Remove items from list 1 and 3

这是用于插入和删除主要的潜艇

Public Sub btnMajSubAdd_Click() Handles btnMajSubAdd.Click
    Try
        'CODE TO ADD MAJOR SUBJECTS IN TO THE LIST AND THE ALL SUBJECTS LIST
        If btnMajSubAdd.Text = "+" Then
            If txtMajSubs.Text <> "" Then
                lbMajorSubs.Items.Add(Trim(txtMajSubs.Text))
                lbAllSubs.Items.Add(Trim(txtMajSubs.Text))
                txtMajSubs.Text = ""
                txtMajSubs.Focus()
            End If
        Else
            For n As Integer = 0 To lbMajorSubs.SelectedItems.Count - 1
                ' REMOVE THE CURRENT SELECTED ITEM FROM ITEMS
                For i As Integer = 0 To lbAllSubs.Items.Count - 1
                    If lbAllSubs.Items(i).ToString = lbOptSubs.SelectedItems(n).ToString Then
                        lbAllSubs.Items.Remove(lbAllSubs.Items(i))
                        lbMajorSubs.Items.Remove(lbMajorSubs.SelectedItems(n))
                        i = i - 1
                        n = n - 1
                    End If
                Next i
            Next n
            btnMajSubAdd.Text = "+"
            txtMajSubs.Focus()
        End If
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
End Sub

1 个答案:

答案 0 :(得分:1)

建议的方法是使用模型 - 视图 - 控制器模式。不是将项直接添加到列表框,而是将其添加到集合中,然后使用集合中的项刷新列表框。

在这种特殊情况下,维护两个集合,分别添加主要主题和次要主题。添加新主题后,将其添加到相应的集合中,然后立即刷新列表框。

从列表框中删除项目后,从集合中删除相应的项目,然后再次刷新列表框。