2011-12-24 165 views
2

我想將checkedlistbox中的選中項添加到我的組合框中,但我在這裏遇到了一些問題。 Combobox只顯示最後一項檢查的項目。 這是我的示例代碼。如何將checkedlistbox中的選中項添加到組合框中

If CheckedListBox1.CheckedItems.Count <> 0 Then 
     For i As Integer = 0 To CheckedListBox1.CheckedItems.Count - 1 
      cbCheckedItem.Text = CheckedListBox1.CheckedItems(i).ToString 
     Next i 
    End If 

任何人都可以幫助我顯示所有檢查項目?? 感謝您的幫助...

回答

1

奇怪的是CheckedListBox有CheckedItems屬性,它是一個集合。因此,您可以像使用任何其他集合一樣使用For或For Each循環來遍歷它。

然後,每個項目都需要添加到組合框的Items集合中。

這樣的例子:

Public Class frmCheckedListBox 

Private Sub frmCheckedListBox_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    Me.CheckedListBox1.Items.Clear() 
    Me.CheckedListBox1.BeginUpdate() 
    Me.CheckedListBox1.Items.Add("One") 
    Me.CheckedListBox1.Items.Add("Two") 
    Me.CheckedListBox1.Items.Add("Three") 
    Me.CheckedListBox1.Items.Add("Four") 
    Me.CheckedListBox1.Items.Add("Five") 
    Me.CheckedListBox1.EndUpdate() 
End Sub 

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click 
    For Each Item As String In Me.CheckedListBox1.CheckedItems 
     Me.ComboBox1.Items.Add(Item) 
     Me.ComboBox1.SelectedIndex = 0 
    Next 
End Sub 

末級

示例代碼所示,CheckedItems集合包含檢查,正如名字所暗示的項目。它不包含每個項目的每個項目的布爾值以指示是否被選中。如果一個項目被選中,那麼這個項目在CheckedItems中,如果它不是,那麼它不是。您只需循環訪問集合並獲取其中的所有項目,因爲它包含所有已檢查的項目,而不包含所有項目。

到底

你可以把:

Me.Combobox1.items.clear() 

,因爲它何時會與示例代碼點擊它就會有再點擊下一個點擊將返回前一個是點擊了一個再新一個所有組合框中選擇菜單編譯

也許我的回答可以幫助你解決問題

+1

我困惑的是,爲什麼你5天后發佈了一個答案,說確切我也是這麼做的,就像我一樣很顯然,爲什麼它得到3 upvotes相比,我1。當然,你應該已經提高了我的答案,因爲你給了你想要發佈什麼代碼的想法... – 2011-12-30 05:18:44

+0

我想我不需要upvote你。它基本上是我的知識,而不是你的。大聲笑 – DevYudh 2011-12-30 05:32:59

0

Combobox沒有多選選項。因此一次只能選擇一個項目。

2

您不是項目添加到組合框中,您只能設置其Text屬性。這是更改當前顯示在組合框中的文本,並且一次只能顯示一個項目。

如果你想要項目是永久性的和可選擇的,你需要加到組合框控件的Items collection

示例代碼:

If CheckedListBox1.CheckedItems.Count > 0 Then 
    For Each checkedItem In CheckedListBox1.CheckedItems 
     cbCheckedItem.Items.Add(checkedItem.ToString()) 
    Next 
End If 

或者更好的是,使用AddRange method

If CheckedListBox1.CheckedItems.Count > 0 Then 
    Dim checkedItems() As String = CheckedListBox1.CheckedItems.Cast(Of String).ToArray() 
    cbCheckedItems.Items.AddRange(checkedItems) 
End If 
+0

感謝您的幫助... – Flashidkz 2011-12-24 11:04:40

相關問題