Hur får man ett antal controller (picturebox i detta fallet) att skapas och ritas ut i formen efter programmet startats? c#: 1. vb.net jag håller på med, tyvärr inte c# > 1. vb.net jag håller på med, tyvärr inte c# VB.net jo ser bra ut men hur får jag det sedan till att vara pb(x)? blir det så per automatik? Här har du en länk som beskriver hur du lägger till kontroller. Man kan säga att det blir så med autmatik. De kommer automatiskt in i containerns controls collection. Men i den samlas även alla andra kontroller som ligger i samma container. För att förtydliga mitt problem så kommer här en längre förklaring: Här är ett exempel jag gjorde som du säkert kan modifiera för dina behov: Ja men de är ju underbart!Skapa controller efter start
Antagligen inte svårt, men jag får de då inte att funka iaf. Testat att göra det till en array av pictureboxar som jag använder, inga framsteg där heller.
Vad är det jag missat, för de måste väl gå, då jag har gjort detta för 5år sen i vb ;)Sv: Skapa controller efter start
for(int i=0; i < _antal_; i++)
{
PictureBox pb;
pb = new PictureBox();
pb.Location = new Point(_x_led_, _y_led_);
this.Controls.Add(pb);
}Sv:Skapa controller efter start
2. Tanken är att jag ska ha alla pictureboxar som: picbox(i).blaha, och där med få deras events som click med mera att hanteras med samma kod...
Tack för hjälpen ändå =)Sv: Skapa controller efter start
Då får du lära dig att åtminstone läsa c#, tekniken är exakt samma, bara olika syntax.
> 2. Tanken är att jag ska ha alla pictureboxar som: picbox(i).blaha, och där med få deras events som click med mera att hanteras med samma kod...
Då får du skapa en ArrayList också (eller List<> om du kör 2.0) för bara dina pictureboxes och deklarera i din klassSv:Skapa controller efter start
<code>
Dim pb As New PictureBox()
Dim iY, iX, iWidth, iHeight As Integer
iY = 0 : iX = 0
iWidth = 30 : iHeight = 30
'Egentligen valfritt att sätta placering och storlek hur man vill men att göra så mycket som möjligt på en gång är att föredra
'pb.Location = New Point(iX, iY)
'pb.Size = New Size(iWidth, iHeight)
pb.Bounds = New Rectangle(iX, iY, iWidth, iHeight)
pb.Visible = True
pb.BorderStyle = BorderStyle.FixedSingle 'en kant bara för att se vart den hamnar
Me.Controls.Add(pb)
</code>Sv: Skapa controller efter start
Och ja jag är helt värdelös på detta jädra hopplösa skitspråk ;)Sv: Skapa controller efter start
http://www.exforsys.com/content/view/1514/350/
/JesperSv:Skapa controller efter start
Typ
<code>
For each Ctrl as Control in me.controls
if TypeOf Ctrl is picturebox then
'Hittade en
end if
Next
</code>
Du kan ju också om du vill lägga till dem till en array, collection eller annat vid skapande om så önskas.
Mvh
PeterSv: Skapa controller efter start
Jag ska göra ett memory spel i vb.net så jag tänkte att de hela vore ju lättast om jag bara gjorde en array av pictureboxar som jag loopar igenom och sätter till de olika bilderna. nåt i stil med
<code>
Dim pb(30) as PictureBox
For i = 1 to 30
pb(i).blaha = 1.jpg
...
Next i
</code>
detta funkar uppenbarligen inte tydligen, vilket jag efter mycket om och men inte kan förstå varför eftersom det för mig verkar helt logiskt. Så jag gjorde som det gavs förslag om, men då får jag ingenstans som tar hand om clicken eller andra events, hur löser man det?
Hur kommer det sig att man bara inte kan göra en array som i min kod ovan och saken är biff?Sv:Skapa controller efter start
<code>
Dim pbArr(10) As PictureBox
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim i, iY, iX, iWidth, iHeight As Integer
iY = 0 : iX = 0
iWidth = 30 : iHeight = 30
For i = 0 To 10
Dim pb As New PictureBox()
pb.Bounds = New Rectangle(iX + i * iWidth, iY, iWidth, iHeight)
pb.BorderStyle = BorderStyle.FixedSingle 'en kant bara för att se vart den hamnar
pbArr(i) = pb
Me.Controls.Add(pbArr(i))
AddHandler pbArr(i).Click, AddressOf Me.ImgCommon_Click
Next
End Sub
Private Sub ImgCommon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
MsgBox(sender.left)
End Sub
</code>
Det är alltså AddHandler som är nyckelfunktionen för dig.
Exemplet ritar 11 pictboxar bredvid varandra och när man klickar på den visar den en msgbox som talar om sin egen utgångspunkt i x-led.Sv: Skapa controller efter start
Tusen och åter tusen tack :)
Nu kan jag äntligen få sova ;) // Rasmus