Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
29.02.2016
Размер:
112.81 Кб
Скачать

Основные свойства ComboBox

Свойство DropDownStyle - определяет интерфейс с пользователем (стиль и возожность достута к текстовому полю ComboBox). При значении свойства DropDown это выпадающий список с возможностью изменения текстового поля, при DropDownList - доступ к текстовому полю закрыт. При значении свойства Simple список постоянно открыт (естетвенно отсутствует кнопка раскрытия списка), а редактирование поля Text разрешено.

Программная смена DropDownStyle выглядит несколько иначе, чем простое присваивание значения:

comboBox1.DropDownStyle=ComboBoxStyle.DropDown;

comboBox1.DropDownStyle=ComboBoxStyle.DropDownList;

Свойство DropDownWidth - определяет ширину раскрывающейся части поля со списком. DropDownWidth не может быть меньшая чем ширина ComboBox. На Рис.3. (см. ниже) видно, как влияет свойство DropDownWidth на вид выпадающего списка при значении свойства DropDownWidth более размера контрола.

Других cвойств, отличных от войтв контрола ListBox у ComboBox нет, но приутствют все остльные его свойтва. Это означает, что ComboBox по существу тот же ListBox, но имеющий для свойства Text отдельное поле и имеющий возможноть отображать пункты списка как выпадающие. Поэтому, далее, практически повторены уже используемые при рассмотрении контрола ListBox коды, в которых учтены лишь незначительные особенности ComboBox.

Операции над списками в ComboBox

Добавление строк в ComboBox

Для задания свойства Items на этапе разработки необходимо кликнуть на многоточии рядом с ним в окне Proporties и, тем самым, вызвать String Collection Editor. В нем можно ввести необходимые тексты строк, которые после нажатия кнопки "OK" появятся в окне контрола.

Для добавления строк программно можно воспользовться одним из ледующих методов:

1.

comboBox1.Sorted=true; for(int i = 10; i > 0;i--)

{

listBox1.Items.Add(i.ToString());

}

2.

string[] sArayItems = {"Отлично", "Хорошо", "Удовлетворительно","Неудовлетворительно"};

comboBox1.Items.Clear();

for(int i = 0;i < sArayItems.GetLength(0);i++)

{

comboBox1.Items.Add(sArayItems[i]);

}

3.

string[] sArayItems = {"Неудовлетворительно","Удовлетворительно", "Хорошо","Отлично"};

comboBox1.Items.Clear();

for (int i = 0;i < sArayItems.GetLength(0);i++)

{

comboBox1.Items.Insert(0,sArayItems[i]);

}

4.

comboBox1.Items.AddRange(new object[] {"Отлично", "Хорошо", "Удовлетворительно","Неудовлетворительно"});

5.

string[] sArrayItems;

sArrayItems = new string[]{"Отлично", "Хорошо", "Удовлетворительно","Неудовлетворительно"};

comboBox1.DataSource = sArrayItems;

6.

private void toolStripButton1_Click(object sender, EventArgs e)

{

System.Object[] soItems = new System.Object[10]; for (int i = 0; i <= 9; i++)

{

soItems[i] = "Строка " + i;

}

comboBox1.Items.AddRange(soItems);

}

Доступ к строкам в ComboBox

Особенностью ComboBox, отличющей его от ListBox, является то, что выбранный текст визуально можно посмотреть в окошечке Text, в oстальном отличия по доcтупу нет. Напомним рассмотренные методы:

1.Получаем текст выбранного пункта if(comboBox1.SelectedIndex != -1) Text=comboBox1.SelectedItem.ToString();

2.

Text=comboBox1.Text //Можно и так

MessageBox.Show(listBox1.Text, "");

3.Получаем индех выбранного пункта if(comboBox1.SelectedIndex != -1)

Text=comboBox1.SelectedIndex.ToString();

4.//Используя обработчики событий

private void comboBox1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)

{

ComboBox combobox=((ComboBox)sender); int index = combobox.SelectedIndex; if(index >= 0) Text=combobox.Items[index].ToString();

}

Удаление пунктов из списка

Для удаления пунктов из списка воспользуемся одним из способов:

1. try

{

comboBox1.Items.RemoveAt(0);

}

catch

{

}

2.

comboBox1.Items.Remove(comboBox1.SelectedItem);

3. comboBox1.Items.Remove("Неудовлетворительно");

Следующий пример демонстрирует возможность множественного удаления повторяющихся строк в списке при использовании метода FindStringExact, который ищет указанную строку с указанного индекса или начала списка и, при нахождении, возвращает ее индекс.

//Добавляем в ComboBox несколько повторяющихся строк

private void toolStripButton1_Click(object sender, EventArgs e)

{

//Заглавие используем для индикации того что удалили

Text="";

string[] sArayItems = {"Отлично", "Хорошо","Хорошо",

"Удовлетворительно","Неудовлетворительно","Неудовлетворительно"}; comboBox1.Items.Clear();

for (int i = 0;i < sArayItems.GetLength(0);i++)

{

comboBox1.Items.Add(sArayItems[i]);

}

}

//По клику мышки все пункты с одинковым текстом удаляются //а текст пункта переносится в свойство Text формы. private void comboBox1_SelectedIndexChanged(object sender,

EventArgs e)

{

ComboBox combobox = (ComboBox) sender;

string sSelString = (string) combobox.SelectedItem; int index = -1;

index = combobox.FindStringExact(sSelString); while(index != -1)

{

combobox.Items.RemoveAt(index);

index = comboBox1.FindStringExact(sSelString,index);

}

Text = Text+ " " + sSelString;

}

Этот код можно использовать для выборки пунктов из списка в некоторый отобранный список, например в другой ListBox, ComboBox или TextBox.

Соседние файлы в папке Лаб_раб_файлы