Hej! Hej! Hej Håkan! Hej igen!Kontrollarrayer
Har konverterat ett VB6-projekt till .NET. Har i projektet ett flertal textboxar med namnet Text1 och med Index 1-50.
I VB6 anropade jag dessa med formnamn.text1(12).text, men när jag nu gör detta får jag meddelande att index 12 inte finns?!?!
Får samma fenomen med option och lablar...
/MiZSv: Kontrollarrayer
Det fungerar inte på samma sätt i VB.net som i VB6.
Du kan komma åt ett visst index av en viss kontrolltyp, i ett formulär/fönster.
Man kan även skapa ett eget objekt av den typ som man vill ha och som då ärver ett annat objkt för att hantera samlingar. (motsvarande en Control array)
Du kan även loopa igenom alla kontrollerna på ett formulär, verifiera om kontrollen är av typen Textbox och därefter kolla indexet eller namnet eller så.
Säg till om jag ska förtydliga med exempel.
Lycka till!
HåkanSv: Kontrollarrayer
ja tack, jag tar gärna ett exempel...
Har t.ex. 20 textboxar och vill skriva A,B,C osv i dem i en snurra.
/MiZSv: Kontrollarrayer
Svara
Sv: Kontrollarrayer
Ja, jag tar det enklaste exemplet, där man går igenom och samlar upp alla textrutor till en matris av textrutor.
Kan laddas i Form_Load eller där du önskar.
<code>
Dim ctrl As Control
Dim myTextBoxArrary As New ArrayList
Dim tb As TextBox
For Each ctrl In Me.Controls
If TypeOf ctrl Is TextBox Then
myTextBoxArrary.Add(ctrl)
End If
Next ctrl
' Hämta en textruta ur samlingen, index = 1
tb = CType(myTextBoxArrary(1), TextBox)
' Sätt texten i den textrutan
tb.Text = "En text..."
</code>
Dock har jag inte koll på hur man bestämmer i vilken ordning de läses ut från matrisen av textrutor.
Man kan t.ex. använda en HashTable eller liknande för att hålla reda på ordningen.
Självklart kan man åstadkomma mer sofistikerade lösningar med objekt och samlingar men det kan vara "over kill", även om det är snyggare.
Lycka till!
Håkan