Function funk(ByVal i)
PictureBox[red][b]1[/b][/red].BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\green.jpg"))
End Function
Det är nog inte möjligt. Du får nog göra ngt i stil med:
List<PictureBox> allaboxar = new List<Picturebox>();
;lägg in dinna värden i lista...
Function funk(ByVal i)
allaboxar[i].BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\green.jpg"))
End Function
Jag har 400 bilder i mitt program. De alla heter PictureBox1 t.o.m. PictureBox 400. När man klickar på varje bild så vill jag att denna bild skall bli en ring eller ett kryss beroende på vems tur det är.
skapa då en metod som du kallar på från respektive picturebox vid metoden OnClick. Alltså i OnClick kallar du på din nya metod som tar med sig ett objekt, detta objekt ska då vara din picturebox som du sedan castar från objekt till picturebox och där byter du sedan bild.
Har ingen utvecklingsmiljö framför mig men i stil med:
Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click
Dim bild = PictureBox1.BackgroundImage
[b][red]If bild = "C:\Documents and Settings\Administrator\Desktop\Projektarbete\tom.jpg" Then[/red][/b]
If tur = 1 Then
PictureBox1.BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\green.jpg")
tur = 0
Else
PictureBox1.BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\red.jpg")
tur = 1
End If
End If
End Sub
När jag startar programmet är det inget fel. Men när jag klickar på PictureBox1 så markerar den fel på raden som är fetstilad. Det står att något om Bitmap... :(
Varför gör du inte som jag beskrev ovan (att skicka med pictureboxen som ett object).
Du kan använda FindControl() som returnerar en Control som du sedan får kasta till en PictureBox.
Käns lite onödigt att skapa en metod för respektive picturebox's Click. Hänvisa alla Click till samma metod och ta i den ut vilken picturebox det är. på detta sätt blir det lättare att ändra i koden efterhand.
Om du skapar felra picturebox och ger de samma "name" så bör det gå att komma åt dem via:
Function funk(ByVal i)
' Alla boxarna har name satt till boxes.
Boxes(i).BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\green.jpg"))
End Function
Denna metod funkade iaf under VB 3.0 för ett antal år sedan, och bör säkert funka även nu.
Om du skapar felra picturebox och ger de samma "name" så bör det gå att komma åt dem via:
Function funk(ByVal i)
' Alla boxarna har name satt till boxes.
Boxes(i).BackgroundImage = Image.FromFile("C:\Documents and Settings\Administrator\Desktop\Projektarbete\green.jpg"))
End Function
Denna metod funkade iaf under VB 3.0 för ett antal år sedan, och bör säkert funka även nu.
Det gör den inte, men principen är ändå relevant.
asp, skapa och lägg in alla bilderna i en tvådimensionell array (20,20), så kan du hitta dem enkelt. Det blir dessutom den klart effektivaste koden.
okej, nu vet jag inte exakt, för jag har inte visual studio(?) framför mig. Men någonstans måste du ju ange vilken funktion som skall köras när man klickar på knappen. Istället för att länka den till PictureBox1_Click, PictureBox2_Click osv så länkar du alla till PictureBox_Click. Och låter alla PictureBoxar ha ett unikt ID.
Det kan dock vara möjligt att det är som emission säger. Men då får han förevisa exempel :) , och gärna en förklaring till varför det skulle vara mer effektivt :stud
Knapparna kan fortfarande heta X1Y1, X2Y2 etc. Och koden behöver inte förändras för det. Du skickar med namnet, ja faktiskt hela objektet som klickat på knappen i "sender". Och vet på så sätt vilken knapp som blivit nertryckt. Du behöver bara koppla "OnClick" till samma funktion för varje knapp.