Здравствуйте, познания в С# на настоящее время не глубоки и не откажусь от любой помощи, извините если тема повторяется. На форме создал панель с кнопками на ней. по нажатию кнопки динамически добавляю точно такую же панель с точно такими же кнопками. Реализовал вот так:
| Код |
public partial class Form1 : Form { List<Button> but1 = new List<Button>(); List<Panel> pnlist1 = new List<Panel>(); List<Control> cntrlist = new List<Control>(); int x = 1; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { but1.Clear(); for (int i=0; i < this.panel1.Controls.Count; i++) { if (this.panel1.Controls[i].Name.Contains("utton")) { Button btt1 = new Button(); btt1.Name = "btt1" + this.panel1.Controls[i].Name + Convert.ToString(x); btt1.Location = new Point(this.panel1.Controls[i].Left, this.panel1.Controls[i].Top); btt1.Size = this.panel1.Controls[i].Size; btt1.Text = this.panel1.Controls[i].Text; but1.Add(btt1); } } Panel pnn1 = new Panel(); pnn1.Name = "pnn1" + panel1.Name + Convert.ToString(x); pnn1.Height = panel1.Height; pnn1.Width = panel1.Width; pnn1.BorderStyle = BorderStyle.FixedSingle; if (x == 1) { int k = panel1.Top + panel1.Height + 10; pnn1.Location = new Point(panel1.Left, k); this.Controls.Add(pnn1); pnlist1.Add(pnn1); } if (x > 1) { int k = pnlist1[pnlist1.Count - 1].Top + pnlist1[pnlist1.Count - 1].Height + 10; pnn1.Location = new Point(panel1.Left, k); this.Controls.Add(pnn1); pnlist1.Add(pnn1); } for (int j = 0; j < but1.Count; j++) { pnn1.Controls.Add(but1[j]); } x++; }
|
Догадываюсь что это можно сделать проще и оптимальнее создав класс или классы, но знаний пока не хватает. Подскажите или я прав и как это можно сделать, если можно с примером. |