1. Определение – динамична структура от данни с променлив размер. Можем да добавяме и махаме елементи само в края на списъка, като това заделя или освобождава памет в компютъра.
2. Синтаксис
List<int> numbersList = new List<int>(); //създаване на списък numbersList.Add(num); //добавяне на елемент към списък for(int i = 0; i < numbersList.Count; i++)//обхождане на списък
Пример 1: Да се направи списък от войници (картинки). Да може да добавя и убива войник. Да може да се изпраща цялата войска в атака напред.
List<PictureBox> soldiers = new List<PictureBox>(); int count = 0; private void button2_Click(object sender, EventArgs e) {//Attack - войниците тръгват напред чрез таймер1 timer1.Enabled = true; } private void timer1_Tick(object sender, EventArgs e) {//Attack - Войниците се движат напред Random rnd = new Random(); int num; for (int i = 0; i < soldiers.Count; i++) { num = rnd.Next(3, 10); soldiers[i].Left = soldiers[i].Left + num; } } private void button3_Click(object sender, EventArgs e) {//Destroy Army - Убиване на всички войници(изчезват) for (int i = 0; i < soldiers.Count; i++) { soldiers[i].Visible = false; } } private void button4_Click(object sender, EventArgs e) {//Move Down - всички войници се придвижват надолу for (int i = 0; i < soldiers.Count; i++) { soldiers[i].Top = soldiers[i].Top + 5; } } private void button5_Click(object sender, EventArgs e) {//Remove - изключваме войник от списъка и той остава да пази бараката int ind = soldiers.Count - 1; soldiers[ind].Left -= 50; soldiers[ind].BorderStyle = BorderStyle.Fixed3D; soldiers.RemoveAt(ind); } private void button6_Click(object sender, EventArgs e) {//Kill - убиване на войник (изчезва) int ind = soldiers.Count - 1; soldiers[ind].Visible = false; soldiers.RemoveAt(ind); } private void pictureBox1_Click(object sender, EventArgs e) {//Add - Създаване на нов войник от бараката PictureBox soldier = new PictureBox(); soldier.Image = Properties.Resources.Egyptian_Spearman; soldier.Top = 10 + 100 * count; soldier.Left = 200 - Convert.ToInt16(Math.Pow(-1, count)) * 5 * count; soldier.SizeMode = PictureBoxSizeMode.AutoSize; count++; this.Controls.Add(soldier); soldiers.Add(soldier); }
Задачи за самостоятелнa работа:
1. Да се направи списък от етикети (List <label> labList = new List<label>();).
2. При натискане на Бутон1 да се добавя нов етикет (Label lab = new label();). Като всеки етикет се добавя вдясно от предходния и се номерира с пореден номер.
this.Controls.Add(lab);
labList.Add(lab);
3. При натискане на Бутон 2 – всички етикети да се преместват 10 пиксела надолу.
4. При натискане на Бутон 3 – всички етикети да се оцветяват в червен цвят.
5. При натискане на Бутон 4 – всички етикети да се оцветяват в зелен цвят.