2017-09-27 116 views
0

因此,我試圖列出多個類型的對象,並對其進行了研究並發現它,但我也研究了結構並發現我可以使用它,但它不會將它自己作爲列表返回。從多個表單對象中創建一個列表(Of ...)

Imports WinText = System.Windows.Forms.TextBox 
Imports WinCombo = System.Windows.Forms.ComboBox 

Public Class PSS  

    Public EntryItems = New List(Of Elements) 

    Structure Elements 
     Dim xSchool As WinCombo 
     Dim xClass As WinCombo 
     Dim xID As WinCombo 
     Dim xName As WinText   
    End Structure 
End Class  

編輯:所以在窗體上我有一套ComboBoxes和TextBoxes(比這裏的例子多20個)。我想把它們放到一個列表中,以便當我將檢索它們的結果,或者獲取它們的SQL引用名稱或類似名稱時,我將能夠將它們放入一個循環中,從而使代碼更高效,更短。

+1

'我試圖列出多個類型的對象'您的列表包含一個包含多個對象的結構體。 '但它不會將自己作爲一個沒有返回語句的列表返回,你期望如何返回這個列表?你想要在一個屬性或函數中返回它嗎?我想問題是你需要填充你的列表。是對的嗎? – djv

+0

** [五分鐘介紹到類和列表](http://stackoverflow.com/a/34164458/1070452)** – Plutonix

+0

總之,我想基本上創建一個ComboBoxes和TextBoxes列表。我的實際代碼要長得多(而且很複雜),但我提到了返回,就像我在測試時一樣,列表是空的。 –

回答

0

起初,信貸給MatSnow。

以他的概念As Control我能夠做一個List(Of Control)允許我製作和添加項目。

Dim ControlList As New List(Of Control) 
ControlList.Add(ComboBox1) 
ControlList.Add(TextBox1) 
'And so on 
0

StructureClass有相似之處,但不是一個列表。 (閱讀更多關於here

您可以創建一個List(Of Structure),但您需要首先填充它,如djv已在評論中所述。

Private Sub Populate() 
    Dim list As New List(Of Elements) 

    list.Add(New Elements) 
    'Add as much Elements as you want 
End Sub 

假設你的控件都放在一個名爲Form1表上。

For Each ctrl As Control In Form1.Controls 
    If TypeOf ctrl Is TextBox Then 
     Dim tb As TextBox = DirectCast(ctrl, TextBox) 
     'Do whatever you want with the current TextBox 
    ElseIf TypeOf ctrl Is ComboBox Then 
     Dim chk As ComboBox = DirectCast(ctrl, ComboBox) 
     'Do whatever you want with the current ComboBox 
    End If 
Next 
+0

總之,我想基本上創建一個ComboBoxes和TextBoxes的列表。我的實際代碼更長(也更復雜),但我的目標是製作一個來自不同類型和天賦的列表,我認爲要創建一個結構,它將組成ComboBoxes和TextBoxes,然後將它們放入列表中,但顯然這不是方式。 –

+0

如果我使用'Dim ControlList As New List(Of Control)'是否可能? 編輯v1.2,然後使用'ControlList.Add(exampleTextOrComboBox)'填充它? –

+0

沒關係,測試和工作。 –