Цел на урока: Да използваме динамични контроли в наши програми.
До сега винаги добавяхме контроли (етикет, текстово поле, бутони, картинки и тн.) през менюто вляво – Toolbox. В този урок ще видим как динамично да добавяме контроли чрез код. Това ще ни позволи да имаме неограничен брой контроли от даден вид. Което ще рече, че ще можем например при всяко натискане на бутон да изстрелваме нова ракета и колкото пъти натиснем бутона толкова ракети ще имаме (както е в истинските игри).
Примерен код: Да се напише програма, която позволява чрез натискане на клавиш от клавиатурата да се добавят динамично етикети, в които пише “Това е динамична контрола”. И след това чрез натискане на бутон да се активира таймер, който движи всички нови етикети надясно.
private void Form1_KeyDown(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.A) { Label lab = new Label(); lab.Text = "Това е динамична контрола"; lab.AutoSize = true; lab.Left = 20; lab.Top = 50; this.Controls.Add(lab); } } private void timer1_Tick(object sender, EventArgs e) { foreach (Control cnt in this.Controls) { if (cnt is Label) { cnt.Left = cnt.Left + 10; } } }
Примерен код2: Да се направи демо на стратегичека игра. При двукратно натискане на барака(картинка1) да се появява нова картинка войник. Като всеки войник е под предходния чрез таймер всички да се движат наляво.
int position = 0; private void pictureBox1_DoubleClick(object sender, EventArgs e) { PictureBox pic1 = new PictureBox(); pic1.Left = 10; pic1.Top = position; pic1.Height = 100; pic1.Width = 100; position += pic1.Height + 10; pic1.SizeMode = PictureBoxSizeMode.StretchImage; pic1.Image = Properties.Resources.soldier_sword; this.Controls.Add(pic1); } private void timer1_Tick(object sender, EventArgs e) { foreach (PictureBox item in this.Controls) { if (item is PictureBox && item.Height == 100) { item.Left = item.Left - 5; } } }
Задачи за самостоятелна работа:
1. Да се напише програма, която позволява чрез натискане на клавиш от клавиатурата да се добавя динамично бутон с текст по избор, който да се движи с таймер надолу и наляво.
б) Да се промени цвета на бутона.
в*) Да се добави възможност, ако се натисне друг клавиш от клавиатурата да се добавя динамично бутон, който се движи надясно.
2. Да се направи програма, която чрез натиснаке на бутон да добавя картинка по избор. Картинката да се движи с таймер нагоре.
3. Да се направи програма, която чрез двукратно натиснаке на етикет да добавя вдясно картинка по избор. Всички картинки да се движат с таймер наляво.
б) С натискане на клавиш от клавиатурата да се добавя вдясно друг тип картинки.
в) С натискане на друг клавиш да се движат двата типа картинки една към друга.