1: Hur gör jag om jag har två st picturebox och vill placera dem ovanpå varandra. Hej.. "Måste jag lägga dem i en array för att de inte ska försvinna varje gång jag kör koden eller är detta helt menlöst??" Hur ser syntaxen för det ut? Kontrollerna kommer att läggas ovanpåvarandra i den ordning de addas. Det funkar inget vidare Johan. Får föjande felmeddelande då jag försöker med denna rad: Men du skall inte ha:2 Frågor om PictureBox
Så här ser mitt form ut. Har först en bakgrunds bild. Sedan har jag en picturebox som täcker utt ungefär 10% av bakgrundsbilden. Nu vill jag lägga in flera mindre picturebox ovanpå den som täcker 10%. Hur gör jag det?
2: I min applikation kommer ett flertal picturebox att finnas. Koden som målar ut den se ut så här.
<code>
ArrayList pictureBoxes = new ArrayList();
for (int i =0; i < 100; i++)
{
PictureBox playerPictureBox;
playerPictureBox=new PictureBox();
playerPictureBox.Top=i;
playerPictureBox.Left=i;
playerPictureBox.Height = 20;
playerPictureBox.Width = 40;
playerPictureBox.Visible=true;
playerPictureBox.Image=Image.FromFile(Application.StartupPath + @"\" + Convert.ToString(i)+".gif");
this.Controls.Add(playerPictureBox);
pictureBoxes.Add (playerPictureBox);
}
</code>
Måste jag lägga dem i en array för att de inte ska försvinna varje gång jag kör koden eller är detta helt menlöst??
MVH Henke LSv: 2 Frågor om PictureBox
Det räcker att du sätter pixerboxens pisition. Sedan så kommer de läggas på varandra i den ordning du addar dem till control objektet.
ex:
<code>
this.Controls.Add(this.pictureBox2);
this.Controls.Add(this.pictureBox1); 'Kommer att läggas på 2:an
</code>
Hänger faktiskt inte riktigt med på vad du menar med:
"Måste jag lägga dem i en array för att de inte ska försvinna varje gång jag kör koden "
Varje gång du kör koden så kommer de ju läsas in hela tiden, så på vilket vis tror du att de försvinner?
//Johan NSv: 2 Frågor om PictureBox
När du lägger till PictureBoxarna till Controls-collectionen så håller ju denna en referens till objekten och de kommer inte att försvinna, om det var det du menade? I den meningen behöver du inte lagra referenserna i en egen collection, men det är ju ändå smidigt att göra detta så att man kommer åt dom lätt.
När det gäller den första frågan så kommer jag inte ihåg var en nyskapad picturebox hamnar, framför eller bakom andra kontroller. Du måste eventuellt köra BringToFront()-metoden för att de ska lägga sig framför din bakgrundsbild.Sv: 2 Frågor om PictureBox
<code>
this.Controls.Add(this.playerPictureBox.BringToFront);
</code>
Verkar inte funka.
och inte heller
<code>
this.Controls.Add(this.playerPictureBox.BringToFront());
</code>Sv: 2 Frågor om PictureBox
Lägg till:
<code>
pictureBox.BringToFront();
</code>
efter din cotrols.Add(....)
Tänk då på att BrintToFront() slänger upp controllen över alla andra kontroller.
//Johan N
"This posting is provided "AS IS" with no warranties, and confers no
rights."Sv: 2 Frågor om PictureBox
<code>
this.Controls.Add(playerPictureBox.BringToFront());
</code>
Fel1:
The best overloaded method match for 'System.Windows.Forms.Control.ControlCollection.Add(System.Windows.Forms.Control)' has some invalid arguments
Fel2:
Argument '1': cannot convert from 'void' to 'System.Windows.Forms.Control'
Vad beror det på?
Koden för denna kontrollen finns högst upp i detta inlägg.Sv: 2 Frågor om PictureBox
<code>
this.Controls.Add(playerPictureBox.BringToFront());
</code>
Sa att du skulle lägga:
<code>
</code>
efter din Controls.Add(...) metod. Inte i metoden.
Alltså:
<code>
this.Controls.Add(playerPictureBox);
playerPictureBox.BringToFront()
</code>
Ber om ursäkt om jag var otydlig.
Och än en gång så kommer dessa kontroller då att läggas sig över alla andra kontroller. (även knapper m.m.)
//Johan N
"This posting is provided "AS IS" with no warranties, and confers no
rights."