Главная страница

Практическая работа C# 1. ПЗ Combobox. ComboBox (рисунок 1) представляет собой комбинацию поля редактирования и списка, что позволяет вводить данные путем набора на клавиатуре или выбора значения в списке. Рис Компонент ComboBox


Скачать 417.22 Kb.
НазваниеComboBox (рисунок 1) представляет собой комбинацию поля редактирования и списка, что позволяет вводить данные путем набора на клавиатуре или выбора значения в списке. Рис Компонент ComboBox
АнкорПрактическая работа C# 1
Дата17.04.2022
Размер417.22 Kb.
Формат файлаdocx
Имя файлаПЗ Combobox.docx
ТипДокументы
#481184

Практическое задние: ComboBox
Компонент ComboBox (рисунок 1) представляет собой комбинацию поля редактирования и списка, что позволяет вводить данные путем набора на клавиатуре или выбора значения в списке.


Рис.1. Компонент ComboBox

Задание 1.

Элемент ComboBox образует выпадающий список и совмещает функциональность компонентов ListBox и TextBox. Для хранения элементов списка в ComboBox также предназначено свойство Items.

Подобным образом, как и с ListBox, мы можем в окне свойств на свойство Items и нам отобразится окно для добавления элементов ComboBox:


И как и с компонентом ListBox, здесь мы также можем программно управлять элементами.

Добавление элементов:

1

2

3

4

5

6

// добавляем один элемент

comboBox1.Items.Add("Парагвай");

// добавляем набор элементов

comboBox1.Items.AddRange(new string[] { "Уругвай", "Эквадор" });

// добавляем один элемент на определенную позицию

comboBox1.Items.Insert(1, "Боливия");

При добавлении с помощью методов Add / AddRange все новые элементы помещаются в конец списка. Однако если мы зададим у ComboBox свойство Sorted равным true, тогда при добавлении будет автоматически производиться сортировка.

Удаление элементов:

1

2

3

4

5

6

// удаляем один элемент

comboBox1.Items.Remove("Аргентина");

// удаляем элемент по индексу

comboBox1.Items.RemoveAt(1);

// удаляем все элементы

comboBox1.Items.Clear();

Мы можем получить элемент по индексу и производить с ним разные действия. Например, изменить его:

1

comboBox1.Items[0] = "Парагвай";

Настройка оформления ComboBox

С помощью ряда свойств можно настроить стиль оформления компонента. Так, свойство DropDownWidth задает ширину выпадающего списка. С помощью свойства DropDownHeight можно установить высоту выпадающего списка.

Еще одно свойство MaxDropDownItems позволяет задать число видимых элементов списка - от 1 до 100. По умолчанию это число равно 8.

Другое свойство DropDownStyle задает стиль ComboBox. Оно может принимать три возможных значения:

  • Dropdown: используется по умолчанию. Мы можем открыть выпадающий список вариантов при вводе значения в текстовое поле или нажав на кнопку со стрелкой в правой части элемента, и нам отобразится собственно выпадающий список, в котором можно выбрать возможный вариант

  • DropdownList: чтобы открыть выпадающий список, надо нажать на кнопку со стрелкой в правой стороне элемента

  • Simple: ComboBox представляет простое текстовое поле, в котором для перехода между элементами мы можем использовать клавиши клавиатуры вверх/вниз



Событие SelectedIndexChanged

Наиболее важным событием для ComboBox также является событие SelectedIndexChanged, позволяющее отследить выбор элемента в списке:

public partial class Form1 : Form

{

    public Form1()

    {

        InitializeComponent();

 

        comboBox1.SelectedIndexChanged += comboBox1_SelectedIndexChanged;   

    }

 

    void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

    {

        string selectedState = comboBox1.SelectedItem.ToString();

        MessageBox.Show(selectedState);

    }

}

Здесь также свойство SelectedItem будет ссылаться на выбранный элемент.
   Задание 2.

Свойства компонента приведены в таблице 1.


Таблица 1. Свойства компонента ComboBox

Свойство

Описание

DropDownStyle

Вид компонента: DropDown - поле ввода и раскрывающийся список; Simple - поле ввода и списком; DropDownList - раскрывающийся список

Text

Текст, находящийся в поле ввода/редактирования (для компонентов типа DropDown и Simple)

Items

Элементы списка - коллекция строк

Items.Count

Количество элементов списка

Items.SelectedIndex

Номер элемента, выбранного в списке. Если ни один из элементов списка не выбран, то значение свойства равно -1

Sorted

Признак необходимости автоматической сортировки (True) списка после добавления очередного элемента

MaxDropDownItems

Количество отображаемых элементов в раскрытом списке. Если количество элементов списка больше чем MaxDropDownItems, то появляется вертикальная полоса прокрутки

Location

Положение компонента на поверхности формы

Size

Размер компонента без (для компонентов типа DropDown и DropDownList) или с учетом (для компонента типа Simple) размера области списка или области ввода

DropDownWidth

Ширина области списка

Font

Шрифт, используемый для отображения содержимого поля редактирования и элементов списка

   

Список, отображаемый в поле компонента, можно сформировать во время создания формы или во время работы программы. Чтобы сформировать список во время создания формы, надо в окне Properties (Свойства) выбрать свойство Items, щелкнуть на кнопке с тремя точками (она находится в поле значения строки свойства Items) и в появившемся окне String Collection Editor (Редактор коллекции строк) (рисунок 2) ввести элементы списка.



Рис.2. Формирование списка компонента ComboBox во время создания формы

   

Чтобы сформировать список во время работы программы, надо применить метод Add к свойству Items. Например, следующий фрагмент кода формирует упорядоченный по алфавиту список.

comboBox1->Items->Add("пластик");

comboBox1->Items->Add("алюминий");

comboBox1->Items->Add("соломка");

comboBox1->Items->Add("текстиль");

comboBox1->Items->Add("бамбук");

comboBox1->Sorted = true;

   Программа "Жалюзи" демонстрирует использование компонента ComboBox для ввода данных. Форма программы приведена на рисунке 3, текст — в листинге ниже.


Рис.3. Форма программы "Жалюзи"

   

Настройку компонента ComboBox выполняет конструктор формы. Свойству SelectedIndex конструктор присваивает значение "минус один". Поэтому при появлении формы на экране название материала не отображается. Кроме того, кнопка OK становится доступной только после выбора материала и ввода размеров жалюзи. Доступностью кнопки управляет функция обработки события TextChanged полей редактирования (одна функция обрабатывает событие TextChanged обоих компонентов).

    Вот текст приложения:

. . . . .

// конструктор

Form1(void)

{

InitializeComponent();

comboBox1->DropDownStyle = ComboBoxStyle::DropDownList;

comboBox1->Items->Add("пластик");

comboBox1->Items->Add("алюминий");

comboBox1->Items->Add("бамбук");

comboBox1->Items->Add("соломка");

comboBox1->Items->Add("текстиль");

comboBox1->SelectedIndex = -1;

}
// щелчок на кнопке OK
.. button1_Click……..

{

double w;

double h;

double cena = 0; // цена за 1 кв. м.

double sum;

w = Convert::ToDouble(textBox1->Text);

h = Convert::ToDouble(textBox2->Text);

switch (comboBox1->SelectedIndex)

{

// элементы списка нумеруются с нуля

case 0: cena = 100; break; // пластик

case 1: cena = 250; break; // алюминий

case 2: cena = 170; break; // бамбук

case 3: cena = 170; break; // соломка

case 4: cena = 120; break; // текстиль

}

sum = (w * h) / 10000 * cena;

label4->Text = "Размер: " + w + " x " + h + " см.\n" +

"Цена (р./м.кв.): " + cena.ToString("c") +

"\nСумма: " + sum.ToString("c");

}
// Нажатие клавиши в поле редактирования.

// Функция обрабатывает событие KeyPress

// компонентов textBox1 и textBox2

……. textBox1_KeyPress……………..

{

if ((e->KeyChar >= '0') && (e->KeyChar <= '9'))

return;

if (Char::IsControl(e->KeyChar))

{

if (e->KeyChar == (char)Keys::Enter)

{

if (sender->Equals(textBox1))

// Клавиша нажата в поле Ширина.

// Переместить курсор в поле Высота

textBox2->Focus();

else

// Клавиша нажата в поле Высота.

// Переместить фокус на сomboBox1

button1->Focus();

}

return;

}

// остальные символы запрещены

e->Handled = true;

}
// В списке Материал пользователь

// выбрал другой элемент

comboBox1_SelectedIndexChanged……………

{

if ((textBox1->Text->Length != 0) && (textBox2->Text->Length != 0))

button1->Enabled = true;

label4->Text = "";

}
// Пользователь изменил содержимое

// textBox1 или textBox2

textBox_TextChanged

{

label4->Text = "";

if ((textBox1->Text->Length == 0) ||

(textBox2->Text->Length == 0) ||

comboBox1->SelectedIndex == -1)

button1->Enabled = false;

else

button1->Enabled = true;

}


написать администратору сайта