2016-09-25 86 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

好的,聽起來不錯的建議。我也會嘗試這種方式。 –