Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекція 05. Списки.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
103.35 Кб
Скачать

5.4. Клас CheckedListBox

Елемент CheckedListBox (список з прапорцями) дозволяє поміщати звичайні прапорці усередині поля зі смугами прокрутки.

Крім того, в елементі CheckedListBox передбачена можливість використання декількох стовпчиків. Для цього достатньо встановити значення true для властивості Multiline.

CheckedListBox успадковує більшість своїх можливостей від типу ListBox, але має і власні властивості і методи (табл. 5.4).

Таблиця 5.4 – Деякі властивості CheckedListBox

Властивості

Призначення

CheckOnClick

Отримує або задає значення, яке вказує чи потрібно перемкнути прапорець, коли вибирається елемент. Приймає значення true або false

CheckedIndices

Колекція відмічених індексів в CheckedListBox

CheckedItems

Колекція відмічених елементів в CheckedListBox.

CheckedItems.Count

Кількість відмічених елементів в колекції

Таблиця 5.5 – Деякі методи CheckedListBox і Items

Метод

Призначення

Items.AddRange

Доддає колекцію елементів

Items.Add(textBox1.Text, CheckState.Checked)

Додає один елемент

CheckedItems.Contains

Набуває значення, що показує, чи є вказаний елемент дочірнім елементом.

Розглянемо приклад використання CheckedListBox

Приклад 5.8.

Форма для замовлення піци. На ній розміщено список CheckedListBox, текстове поле textBox1 для додавання елементу в CheckedListBox, список ListBox1 і дві кнопки: Додати (button1) і Показати замовлення (button2).

В конструкторі форми список CheckedListBox заповнюється трьома елементами.

Встановлюється властивість

checkedListBox1.CheckOnClick = true;

Рис. 5.3. Форма для замовлення піцци

Для додавання елементу в CheckedListBox потрібно ввести значення в текстове поле і натиснути кнопку Додати. Ця кнопка активізується, якщо в текстове поле вводиться текст.

В обробнику кнопки перевіряться наявність такого елементу в списку, і якщо елементу немає, він додається. Після цього текстове поле очищується.

Для формування замовлення потрібно відмітити в CheckedListBox елементи і натиснути кнопку Показати замовлення. Вибрані елементи додаються в ListBox1.

Код форми

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

namespace Lab4_CheckListBox

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

// Заповнення списку значеннями

string[] myPizza = { "Челентано", "Гавайська", "Tomato" };

checkedListBox1.Items.AddRange(myPizza);

// Змінимо режим вибору з double-click to single click.

checkedListBox1.CheckOnClick = true;

this.Text = "Замовлення піци";

}

private void button1_Click(object sender, EventArgs e)

{

//Якщо поле textBox1 не пусте і якщо таке значення відстутнє у списку, додає його до списку

if (textBox1.Text != "")

{

if (checkedListBox1.CheckedItems.Contains(textBox1.Text) == false)

checkedListBox1.Items.Add(textBox1.Text, CheckState.Checked);

textBox1.Text = "";

}

}

private void textBox1_TextChanged(object sender, EventArgs e)

{

//Активізує і деактивізує кнопку Додати

if (textBox1.Text == "")

{

button1.Enabled = false;

}

else

{

button1.Enabled = true;

}

}

private void button2_Click(object sender, EventArgs e)

{

//показати замовлення

listBox1.Items.Clear();

for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++)

{

listBox1.Items.Add(checkedListBox1.CheckedItems[i]);

}

}

// Activates the move button if there are checked items.

private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)

{

if (e.NewValue == CheckState.Unchecked)

{

if (checkedListBox1.CheckedItems.Count == 1)

{

button2.Enabled = false;

}

}

else

{

button2.Enabled = true;

}

}

}

}

Рис. 5.4. Форма в процесі виконання

Висновки

Для зручності вибору елементів на формі є різні типи списків. Всі вони походять від абстрактного класу FormatControl, тому мають багато спільних властивостей і методів. Властивості можна встановити в режимі дизайну форми чи динамічно, в коді. Є різні способи заповнення списків елементами, які можуть використовуватися відповідно до логіки роботи програми.

Контрольні питання і завдання для самостійного виконання

1. Яка різниця між ListBox і CheckedListBox?

2. Як задати для ComboBox можливість вибору кількох елементів одночасно?

3. Як підрахувати кількість елементів у списку?

4. Як заповнити список через зв'язування з даними?

5. Який метод дозволяє додати одразу декілька елементів до списку?

6. Що означає команда:

list = new ListBox(); //створення об'єкту list

7. Що означає команда:

private ListBox list;

8. Що потрібно зробити, що елементи, які додаються у список, не дублювалися?

9. Модифікувати приклад 4.7. так, щоб елементи при додаванні до списку не дублювалися.

10. Розробити форму для роботи з ListView