Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Помечаемый список – CheckedListBox



Этот элемент управления представляет список элементов, по которому пользователь может перемещаться с использованием клавиатуры или полосы прокрутки, расположенной справа от элемента управления. Пользователь может поместить галочку рядом с одним или несколькими элементами, и по отмеченным элементам можно перемещаться с помощью CheckedListBox.CheckedItemCollection и CheckedListBox.CheckedIndexCollection.

Чтобы добавить объекты в список во время выполнения, назначьте массив ссылок на объекты с помощью метода AddRange. После этого в списке для каждого объекта будет отображено значение строки по умолчанию. Отдельные элементы добавляются в список с помощью метода Add.

Объект CheckedListBox поддерживает три состояния в перечислении CheckState: Checked, Indeterminate и Unchecked. В коде необходимо установить состояние Indeterminate, поскольку интерфейс пользователя для объекта CheckedListBox не предоставляет нужный для этого механизм.

Если свойство UseTabStops имеет значение true, объект CheckedListBox будет опознавать и разворачивать символы табуляции в тексте элемента, создавая столбцы. Эти позиции табуляции устанавливаются предварительно и не могут изменяться. Чтобы использовать настраиваемые позиции табуляции, установите для свойства UseTabStops значение false, установите для свойства UseCustomTabOffsets значение true, и добавьте пользовательские значения в коллекцию CustomTabOffsets.

Примечание
Если значение свойства UseCompatibleTextRendering равно false, свойств CustomTabOffsets игнорируется и заменяется стандартными интервалами табуляции.

Класс CheckedListBox поддерживает три следующие индексированные коллекции:

Collection Инкапсулирующий класс
Все элементы, содержащиеся в элементе управления CheckedListBox. CheckedListBox.ObjectCollection
Отмеченные элементы (включая элементы в неопределенном состоянии), являющиеся подмножеством элементов, содержащихся в элементе управления CheckedListBox. CheckedListBox.CheckedItemCollection
Отмеченные индексы, являющиеся подмножеством индексов в коллекции элементов. Эти индексы указывают элементы в отмеченном или неопределенном состоянии. CheckedListBox.CheckedIndexCollection

Три следующие таблицы являются примерами трех индексированных коллекций, поддерживаемых классом CheckedListBox.

В первой таблице представлен пример индексированной коллекции элементов в элементе управления (все элементы, содержащиеся в этом элементе управления).

Указатель Элемент Состояние проверки
  Объект 1 Unchecked
  Объект 2 Checked
  Объект 3 Unchecked
  Объект 4 Indeterminate
  Объект 5 Checked

Во второй таблице представлен пример индексированной коллекции отмеченных элементов.

Указатель Элемент
  Объект 2
  Объект 4
  Объект 5

В третьей таблице представлен пример индексированной коллекции индексов отмеченных элементов.

Указатель Индекс элемента
   
   
   
Примечание
Данные невозможно привязать к элементу управления CheckedListBox. Вместо этого для привязки используйте элемент управления ComboBox или ListBox.

Выпадающий список – ComboBox.

Этот вариант списка удобен тем, что не занимает много пространства на форме. Постоянно на форме представлено только одно значение этого списка. При необходимости пользователь может раскрыть список и выбрать другое интересующее его значение. Кроме того, режим DropDown дает пользователю возможность вводить собственное значение при отсутствии необходимого значения в списке.

Давайте рассмотрим пример использования списков. Напишем программу, предназначенную для учета данных об участниках соревнований.

Программа будет содержать два списка – ComboBox, для ввода информации об участниках, и CheckedListBox, для хранения и обработки данных. Спомощью списка ComboBox пользователь будет выбирать фамилии лиц, которых необходимо добавить в список участников. Две кнопки на форме будут добавлять или удалять участников из списка.

Создайте новый Windows Forms проект под названием TestLists. Сохраните его в созданную для наших проектов папку. Переименуйте файл Forml.cs в TestListsForm.cs. Теперь добавьте на вашу форму следующие элементы управления:

· GroupBox, и поместите в него CheckedListBox

· ComboBox

· два элемента Button.

Вы можете последовать моему примеру, или разместить элементы произвольно.

В данном примере можно было обойтись и без элемента GroupBox, так как он предназначен только для оформления интерфейса программы. Однако возьмите себе за хорошую привычку всегда помещать списки внутрь GroupBox элементов. Это сделает ваши программы более привлекательными.

Измените некоторые свойства созданной формы:

Text –«работа со списками»

Теперь изменим свойства элементов управления:

· groupBox1:

Text – «список участников»

· CheckedListBox:

Name — MemberList

· ComboBox

Name — PeopleList

Text —«»

· button1:

Name — buttonAdd

Text — «Добавить»

· button2:

Name —buttonDelete

Text — «Удалить»

Элементы управления ComboBox и CheckedListBox могут быть проинициализированы с помощью дизайнера среды VisualStudio.Net. Для хранения элементов списков данные компоненты имеют свойство Items. Свойство Items само по себе является массивом строк. Давайте проинициализируем элемент управления ComboBox, который имеет имя peopleList, списком фамилий предполагаемых участников соревнований.

Для этого в окне свойств peopleList выберите свойство Items. Откройте окно String Collection Editor, нажав на кнопку с тремя точками в поле Items. Добавьте в предложенный список три фамилии: Иванов, Петров, Сидоров.

И напоследок, добавьте обработчики для кнопок Добавить и Удалить, два раза щелкнув левой кнопкой мыши по каждой из кнопок. Подготовительный этап к написанию программы завершен. Сохраните сделанные вами изменения. Теперь давайте обратимся к коду программы.

namespace MPK_Form2

{

public partial class TestListsForm: Form

{

public TestListsForm()

{

InitializeComponent();

}

private void PeopleList_SelectedIndexChanged(object sender, EventArgs e)

{

}

private void ButtonAdd_Click(object sender, EventArgs e)

{

//работаем со списком для ввода фамилий

//проверяем, выбран ли элемент в списке

if (PeopleList.Text.Length!= 0)

{

//если элемент выбран, то переносим его в список участников

MemberList.Items.Add(PeopleList.Text);

}

else

//если элемент не выбран, то выдаем информационное сообщение

MessageBox.Show("Выберите элемент в списке для ввода или введите новый.");

}

private void ButtonDel_Click(object sender, EventArgs e)

{

//пока список помеченных элементов не пуст

//удаляем из общего списка участников по одному элементу

//при этом список помеченных элементов автоматически обновляется

//таким образом, каждый раз нулевой элемент из Checkedlndices

//будет содержать индекс первого помеченного в списке объекта

//при удалении из списка последнего помеченного элемента

//Checkedlndices.Count станет равным нулю и цикл автоматически завершится

while (MemberList.CheckedIndices.Count > 0)

{

MemberList.Items.RemoveAt(MemberList.CheckedIndices[0]);

}

}

}

}

С удалением и восстановлением

private void button1_Click(object sender, EventArgs e)

{

//работаем со списком для ввода фамилий

//проверяем, выбран ли элемент в списке

if (PeopleList.Text.Length!= 0)

{

//если элемент выбран, то переносим его в список участников

MemberList.Items.Add(PeopleList.Text);

PeopleList.Items.Remove(PeopleList.SelectedItem);

}

else

//если элемент не выбран, то выдаем информационное сообщение

MessageBox.Show("Выберите элемент в списке для ввода или введите новый.");

}

private void button2_Click(object sender, EventArgs e)

{

while (MemberList.CheckedIndices.Count > 0)

{

PeopleList.Items.Add(MemberList.CheckedItems[0]);

MemberList.Items.RemoveAt(MemberList.CheckedIndices[0]);

}

Функция CheckedListBox.Items.RemoveAt удаляет из списка элемент по его индексу. При этом элементы списка, идущие за удаленным, уменьшают свой индекс на единицу.

Класс CheckedListBox содержит свойство Checkedlndices, которое представляет собой массив индексов всех помеченных элементов списка. Этот массив тоже изменяется, если из списка был удален помеченный элемент. А поскольку мы удаляем из списка только помеченные элементы, то Checkedlndices будет изменяться всегда: место удаленного элемента займет следующий за ним. Цикл продолжит работать до тех пор, пока в списке Checkedlndices будет оставаться хоть один элемент.


DataGridView Заполнение

private void dgvl()

{

// Заполнение dataGridView1 данными из двумерного массива

// string [,] pr

dataGridView1.Rows.Clear();

for (int i = 0; i < kpr; i++)

dataGridView1.Rows.Add(pr[i,0],pr[i,1],pr[i,2],pr[i,3],pr[i,4],pr[i,5]);

}


Команда

Обычный

Обычный 12

Рисунок

КомандаС

Заголовок 1

Заголовок 2

Заголовок 3

Красная строка

· Маркированный список

15. Нумерованный список





Дата публикования: 2015-11-01; Прочитано: 756 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.013 с)...