2013-08-06 52 views
0

有誰知道如何動態添加一個數組到VB.net中的一堆組合框?我真的可以使用幫助(我一直在這一整天都在努力)。當我嘗試按照我的方式做到這一點時,我在表單加載時出現錯誤。VB.NET:動態添加陣列到COMBOBOX

我的代碼:

Private Sub Form1_Load(ByVal sender as Object, ByVal e as EventArgs) Handles Me.Load 
    Dim MyArray() as String = {"a","b","c"} 

    For each ctl as ComboBox in Me.Controls 
     if ctl.tag = "yadda" then ctl.Items.AddRange(MyArray) 
    Next 
End Sub 

錯誤: 「無法投型」...按鈕爲鍵入 '......組合框' 的對象。「

我已經嘗試了這麼多的變化到這段代碼,但我只是不能得到它的工作。我的應用程序中最終會有近百個類似構造的組合框,並且我希望能夠以編程方式初始化它們的項目。有人可以幫忙嗎?

感謝,

埃利亞斯

回答

3

這是爲了做到這一點:

Public Class Form1 

    Function getControl(ByVal controlName As String) As Control 
     Dim numCtrls = Me.Controls.Count() 
     For I As Integer = 0 To numCtrls - 1 
      If Me.Controls.Item(I).Name = controlName Then 
       If TypeOf Me.Controls.Item(I) Is ComboBox Then 
        Return CType(Me.Controls(controlName), ComboBox) 
       End If 
      End If 
     Next 
    End Function 

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 

     Dim myArray As Array = {"a", "b", "c"} 
     Dim myComboBox As ComboBox 

     For Each ctl As Control In Me.Controls 
      If TypeOf ctl Is ComboBox Then 
       If ctl.Tag = "yadda" Then 
        myComboBox = getControl(ctl.Name) 
        myComboBox.Items.AddRange(myArray) 
       End If 
      End If 
     Next 

    End Sub 

End Class 

您遍歷所有控件(按鈕,組合,等...),那麼你檢查它是否是你想要的類型(ComboBox)並且做你需要的任何事情。

祝你好運!

+0

不幸的是,當我這樣做時出現錯誤。 **錯誤:'items'不是'System.Windows.Forms.Control'的成員。**我在「ctl.items」下面看到藍色的波浪線。它似乎不認識ctl作爲組合框。該程序甚至不會運行。 – Elias

+0

@Elias 我不好... :-) 你應該改變「If TypeOf cntrl Is」爲「If TypeOf ctl Is」。我更新了代碼。 – spelltox

+0

是的,那不是問題所在。當您最初編寫它時,我注意到了小錯字。問題在於VS2012不會編譯代碼,因爲它不會將「ctl」識別爲組合框。我仍然遇到這個問題。 – Elias