回答
控制陣列早已不復存在。面向對象的方法現在是VB的土地法則。
您需要使用某種形式的集合,如list。
VB6中的控制數組完全存在以允許單個事件處理程序用於同一類型的多個控件。
private sub Button_Click(...) Handles Command1.Click, Command2.Click, Command3.Click
end sub
其容易被忽視的控制陣列的另一種隱式特徵是數字索引的與陣列的每個元素的關聯:
您通過將控制進入Handles
子句爲此在VB.NET 。索引可以是任何正整數,只要它們在集合中唯一;他們不必是連續的。因此,數組更像是一個由整數索引的字典,每個項值都是特定控件類型的一個實例。
邏輯在用於控制陣列的VB6事件處理程序獲取索引的值與該事件的屬性被處理沿着。處理程序中的邏輯通常使用索引來確定哪個控件實例正在引發事件。
.NET事件處理程序有很大不同。您通常會獲取對特定控件實例的引用,以及具有要處理的事件屬性的特定事件對象的實例。你不會得到索引。
此外,VB6應用程序有時具有將控制數組迭代/操作爲數組的邏輯。
在我們默認的翻譯,我們盡力支持,明確依賴該控件數組及其索引在傳統VB6邏輯。我們將控件數組重寫爲一組單獨的控件實例,然後將它們添加到表單初始化期間的通用OrderDictionary < int,controlType>中。單個控件訂閱事件,我們可以使用集合來查找給定控件實例的索引或迭代/操作「數組」中的項目。如果你不明確需要索引或數組,你可以擺脫集合。
動態添加控制是更多的工作現在 - 這是概念性地像將項目添加到所述控制陣列和與VB6(負載對照)單個語句支撐。據我所知,在.NET中,你需要克隆一個控件,明確地複製屬性,並明確地連接事件處理程序。它可以用反射和其他中等先進技術進行推廣 - 但它肯定不是簡單地稱爲「負載控制」。如果在.NET中有更簡單的方法來做到這一點,我很樂意聽到它。 FWIW:我們翻譯成幫助功能。
有三種創建控制數組的方法。
- 分配相同的名稱不止一個控制。
- 複製福音控制並將其過濾到窗體中。
- 將索引正確設置爲非空值。
您只能通過代碼行事。例如:
Dim c() As TextBox
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim j As Integer
For j = 0 To 10
ReDim Preserve c(j)
c(j) = New TextBox
c(j).Name = "txt" & j
c(j).Parent = Me
c(j).Top = j * c(j).PreferredHeight + 2
c(j).Tag = j
c(j).Visible = True
AddHandler c(j).KeyPress, AddressOf TestKeyPress
Next
End Sub
Public Sub TestKeyPress(source As Object, e As KeyPressEventArgs)
Dim index As Integer
index = CInt(source.tag)
If index >= 5 Then
If e.KeyChar > "9" Or e.KeyChar < "0" Then
e.Handled = True
End If
Else
If e.KeyChar <= "9" And e.KeyChar >= "0" Then
e.Handled = True
End If
End If
End Sub
這將創建11個文本框,分配給所有相同的事件處理程序。
TAG屬性用於存儲和檢索文本框的idex。
- 1. 在Visual Basic 6.0中:創建動態控制數組
- 2. 在Visual Basic 2010中創建ActiveX.DLL
- 3. visual basic 2008控件數組
- 4. Visual basic 2010任務欄組
- 5. 在Visual Basic 2010控件中顯示PDF
- 6. Visual basic 2010錯誤
- 7. Visual Basic 2010/Sub Procedure
- 8. Visual Basic 2010 HMAC SHA1
- 9. 如何在C#2010.NET中創建控件數組?
- 10. 添加到組合框在Visual Basic 2010
- 11. Visual Basic 2010組合框到datagrid
- 12. 如何創建用於Visual Basic 2010的自定義按鈕?
- 13. HttpWebRequest,WebBrowser和cookie? (visual basic 2010)
- 14. Visual Basic 2010 HTTP POST請求
- 15. Visual Basic 2010 Html表格
- 16. Visual Basic 2010 Picturebox1.Image ftp upload
- 17. 內連接在Visual Basic 2010
- 18. 二次方程Visual Basic 2010+
- 19. e.CloseReason與Visual Basic 2010 WPF
- 20. Visual Basic 2010快速寫入
- 21. 當創建新的SPA控制器時,Visual Studio 2010會凍結
- 22. Visual Basic 2010 Express Express到數據庫
- 23. Visual Basic,VBA數組循環
- 24. 在Visual Basic 2010二維數組中提示用戶輸入
- 25. 是否可以強制Visual Studio 2010使用Visual Basic 10?
- 26. 控制日期格式Visual Basic腳本
- 27. Visual Basic中的接線控制,控制控件
- 28. 創建並在Visual Studio 2010
- 29. 創建數據庫問題,Visual Studio 2010
- 30. Visual Basic:如何爲DataGridView控件創建LINQ語句?
我不記得,是控制數組,所以你可以動態地添加新的控件到窗體?這是你想要達到的目標嗎? – MikeG 2010-09-25 21:22:13