Jos formilla olisi vaikka picturebox1 ja picturebox2 niin miten saisin tuon numeron muuttumaan jossakin tapahtumassa? esim.
for i = 1 to 64
picturebox[numeron vaihto toiminto].backcolor = color.blue
next i
Indeksoi ne lootat, eli kopioi se yksi loota, pastea formille ja kun vb kysyy halutaanko luoda kontrollitaulukko, vastaa joo. Sitten niille tulee indeksejä, joilla niit viitataan kuin taulukkoa
' loota on picturebox-arrayn nimi.
For i = 0 to loota.UBound ' olikoha UBound, ei muista, kokeile :)
loota(i).BackColor = 0
NextJa huomaa, että indeksit alkavat nollasta.
Eipä tullu sellasta kyselyä! kieli: vb.net
Hörh. No taas nähdään, että ensiks kannattaa myös kertoa se kieli. Kokeile sit käsin antaa jollekin kontrollille indeksi, varmaan dotnet-idessäkin on se kontrollin ominaisuudet -lista..? Siitä Index-kohtaan 0.
Voithan silti tehdä taulukon pictureboxistakin aivan kuin mistä tahansa muustakin oliotyypistä. Niin se on viisainta tehdä.
kertokaa todella tarkkaan, koska joudun aina kysymään erikseen siitä minkä jo kerroitte lyhyesti! Eli miten ne indexoidaan?
Googlesta ja msdn kirjastosta ei tahdo löytää millään oikeaa vastausta kun ne kertoo vaan jostain palvelimista...
'Tee 64 pictureboxin taulukko. En ole varma konstruktorista Dim pictures(64) As New Picturebox 'Muutetaan kaikkien taulukoiden pictureboxien väri For i=0 To 63 pictures(i).BackColor = Color.Lawngreen Next i 'Lisätään joku picturebox formille. En kylläkään voi tarkistaa metodin oikeellisuutta dokumentaatiosta nyt, mutta jokin tämäntapainen se oli. Code completion auttaa. MainForm.add(pictures(i))
Kuten moneen kertaan jo mainittu, hatusta vedettyä ja testaamatonta koodia.
eipä toiminu! New:tä ei voi käyttää arrayn kanssa!
Tämä on sitten testattua koodia ja toimii varmasti. Sovella tästä.
'Initialisoidaan taulukko
Private pic(5) As PictureBox
Private Sub MainFormLoad(sender As System.Object, e As System.EventArgs)
Dim i As Byte
For i=0 To 4
'Luodaan picturebox
pic(i) = New PictureBox()
'Ja asetetaan sijainti sekä koko
pic(i).Location = New System.Drawing.Point(i*60, 64)
pic(i).Size = New System.Drawing.Size(50, 104)
'Joka toinen boksi mustaksi ja joka toinen punaiseksi
If i Mod 2 Then
pic(i).BackColor = Color.Black
Else
pic(i).BackCOlor = Color.red
End If
'Sekä lisätään formille
Me.Controls.Add(pic(i))
Next
End SubEli tämä lätkäisee punaisia ja mustia pictureboxeja formille.
kiitos, kokeilen heti kun jatkan sitä shakki juttua!
Aihe on jo aika vanha, joten et voi enää vastata siihen.