我有3個控件,由同一行上的標籤,列表框和文本框組成。在另一行上,我有3種不同的控件,它們是標籤,列表框和文本框。我想把它們放到這樣的三維數組中:是否可以使用不同的類型創建多維數組?
Dim multiArray() As Object = { {Lane1Label, ListBox1, TextBox1},
{Lane2Label, ListBox2, TextBox2} }
但它不讓我這樣做。有沒有辦法?
我有3個控件,由同一行上的標籤,列表框和文本框組成。在另一行上,我有3種不同的控件,它們是標籤,列表框和文本框。我想把它們放到這樣的三維數組中:是否可以使用不同的類型創建多維數組?
Dim multiArray() As Object = { {Lane1Label, ListBox1, TextBox1},
{Lane2Label, ListBox2, TextBox2} }
但它不讓我這樣做。有沒有辦法?
只是這樣做:
Dim multiArray(,) As Object = _
{ _
{Lane1Label, ListBox1, TextBox1}, _
{Lane2Label, ListBox2, TextBox2} _
}
注意,
在二維數組的聲明。
我很想知道爲什麼反對票 - 這直接回答了這個問題。 – Enigmativity
因爲這是不好的編碼習慣。你可以結束任何元素中的任何類型的對象。您應該使用強類型來定義可以存儲哪些類型的對象。 –
對不起,但是儘可能多的經驗,我不是故意「教奶奶如何吸雞蛋」:) –
使一個類(甚至自定義或用戶控制)來包含的控制各行:
Public Class ControlLine
Public Property Lane As Label
Public Property List As ListBox
Public Property Text As TextBox
End Class
然後創建這些對象的一維陣列(或通常甚至更好:一個List(Of ControlLine)
)和放在這裏您的項目:
Dim lines() As ControlLine = {
New ControlLine With { Lane = LaneLabel1, List = ListBox1, Text = TextBox1},
New ControlLine With { Lane = LaneLabel2, List = ListBox2, Text = TextBox2}
}
這是好得多因爲你的數組中的項目仍然強類型的,良好的編譯時檢查,並對於像智能感知IDE支持。最近版本的Visual Studio也可以通過元組完成。
再次,還可以考慮將其進一步抽象爲自定義或用戶控件,您可以使用一個簡單的構造函數調用來創建整個集合,將一個控件放置在窗體上並使整個集合正確排列,甚至考慮數據綁定這些ControlLines到像FlowLayoutPanel
這樣的容器,而不是自己管理所有的控件和數組。
當然,創建一個類來保存控件,然後把它們放在一個列表中... – Codexer
我建議你使用'DataTable'而不是 – SSS
請注意,在你發佈的代碼中,你聲明瞭一維數組,並試圖給它分配一個2維數組。要聲明一個二維數組,請使用'Dim multiArray(,)As Object'。或者,因爲這些都是控件,所以使用'Dim multiArray(,)As Control'可能會更好。 – Blackwood