控制數組是否支持.Net?我們正在討論將舊版應用程序從VB6轉換爲.Net。該應用程序有很多控制數組。我讀過不同的文章,如果.Net支持控制數組。vb6控制數組.net?
誰能給我一個明確的答案,如果.NET支持控件數組像VB6呢?這是最新版本的.Net 4.0嗎?還是有版本限制?
此外,如果這是可能是直的轉換?如果不是什麼火焰箍將不得不跳過來做到這一點?
謝謝!
控制數組是否支持.Net?我們正在討論將舊版應用程序從VB6轉換爲.Net。該應用程序有很多控制數組。我讀過不同的文章,如果.Net支持控制數組。vb6控制數組.net?
誰能給我一個明確的答案,如果.NET支持控件數組像VB6呢?這是最新版本的.Net 4.0嗎?還是有版本限制?
此外,如果這是可能是直的轉換?如果不是什麼火焰箍將不得不跳過來做到這一點?
謝謝!
「直轉換」是不可能的,但你可以用不同的方式創建控件數組:Creating Control Arrays in Visual Basic .NET and Visual C# .NET
我注意到這篇文章是寫在'03。我可以想象4.0支持這個呢? – webdad3 2011-04-21 00:28:05
@Jeff V是的...... – 2011-04-21 00:28:30
+1這是一篇很好的文章,現在是2011年,一個明顯的改進是使用泛型,而不是爲每個控件類型創建一個新類,可能會有一個泛型類做大部分的驢工作,或許可以有一個通用的'BaseControlArray(Of T)',它繼承'List(Of T)',而不是像文章中的'CollectionBase'。然後'ButtonArray'將繼承'BaseControlArray(Of Button)'並公開這些事件,這些事件將根據控件的類型而有所不同。 – MarkJ 2011-04-21 11:36:14
你可以有控件數組,但它們並不像內置的控件數組是在VB6。但是,您可以創建控件數組或具有與vb6類似的統一事件處理程序。
VB.NET控件數組沒有問題。唯一缺少的是設計師不支持他們。輕鬆解決代碼問題。像這樣:
Public Class Form1
Private TextBoxArray() As TextBox
Public Sub New()
InitializeComponent()
TextBoxArray = New TextBox() { TextBox1, TextBox2, TextBox3 }
End Sub
End Class
只有部分難題。 OP將需要統一的事件處理程序。 – MarkJ 2011-04-21 06:19:47
我想我找到了解決方案,我不是唯一一個曾經在這個限制中掙扎過的VB6開發者。很久以前,我試圖遷移一個軟件,但是我失敗了,因爲它對控制陣列有很強的依賴性。我看了很多論壇,我能寫簡單的代碼:
Public Class Form1
'To declare the List of controls
Dim labels As New List(Of Label)()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'To get all controls in the form
For Each control In Me.Controls
'To search for the specific type that you want to create the array
If control.[GetType]().Name.Contains("Label") Then
'To add the control to the List
labels.Add(DirectCast(control, Label))
End If
Next
'To sort the labels by the ID
labels = labels.OrderBy(Function(x) x.Name).ToList()
End Sub
End Class
我用方便的原因清單,但與代碼,你可以在設計時創建,你需要同時您保持「的控制指數」作爲最後一個字符(標籤,標籤,...,標籤ñ)
以後,你可以用迭代循環和他們在俄式添加它們一隻眼睛的k。接下來,您將能夠使用標籤(0),標籤(1)等對象操作它們。
我希望這段代碼能夠幫助更多的程序員在未來。
又見這些近重複http://stackoverflow.com/questions/5497403/control-array-in-vb-net和http://stackoverflow.com/questions/5497403/control-array-in-vb- net – MarkJ 2011-04-21 11:30:31
VB6 - > VB.Net很少是一個直接的轉換,有很多討論[vb6-migration'標籤](http://stackoverflow.com/questions/tagged/vb6-migration) 。你可能希望訂購一些阻燃內衣之前接近箍(或閱讀一些職位):( – MarkJ 2011-04-21 11:44:22
可能重複[什麼是最簡單的.NET等效VB6控制數組?](http://stackoverflow.com /問題/ 39541 /什麼最簡單的淨等價的-A-VB6控制陣列) – raven 2013-10-23 18:34:27