2016-09-25 87 views
1

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

那么我需要在列表框中添加新的主题。我可以选择多个项目添加到它。我有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

好的,听起来不错的建议。我也会尝试这种方式。 –