Chce stworzyć swoją własną kontrolkę, która będzie zawierać wiele PictureBoxów. Pictureboxy są dodawane automatycznie w konstruktorze kontrolki, jednak nie wyświetlają się na ekranie. Wyświetlana jest kontrolka i pictureboxy pojawiaja się dopiero gdy ją przesuwam w oknie designera, gdy nikt jej nie rusza stają się niewidoczne.
Fragment kodu konstruktora.
pictureBoxArray = new PictureBox[28];
for (int i = 0; i < colorArray.Length; i += 2)
{
pictureBoxArray[i] = new PictureBox();
pictureBoxArray[i].BackColor = colorArray[i];
pictureBoxArray[i].Size = controlSize;
pictureBoxArray[i].Location = new Point(upperLine.X + (controlSize.Width + separateSpace) * i, upperLine.Y);
pictureBoxArray[i].Name = "PictureBox" + i;
pictureBoxArray[i].BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
pictureBoxArray[i + 1] = new PictureBox();
pictureBoxArray[i + 1].BackColor = colorArray[i + 1];
pictureBoxArray[i + 1].Size = controlSize;
pictureBoxArray[i + 1].Location = new Point(lowerLine.X + (controlSize.Width + separateSpace) * i, lowerLine.Y);
pictureBoxArray[i + 1].Name = "PictureBox" + i + 1;
pictureBoxArray[i + 1].BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
}
this.Controls.AddRange(pictureBoxArray);
Pola klasy.
protected Color[] colorArray;
protected PictureBox[] pictureBoxArray;
Size controlSize;
Point upperLine;
Point lowerLine;
int separateSpace;
tablica colorArray jest poprawnie zadeklarowana jednak nie kopiowałem jej zawartości.
Można w ten sposób dynamicznie tworzyć kontrolki? C# przechowuje te obiekty na stercie więc nie wiadomo za bardzo co się z nimi dzieje. Nie znam się na WPF ale z tego co widziałem to kod pisze się tam z "ręki" a nie metodą drag and drop więc pewnie pozwala na coś takiego. Można łączyć WPF z windows forms i czy WPF faktycznie pozwala na generowanie kontrolek na stałe.