Visual Basic, .NET, ASP, VBA, VBScript
 
  Библиотека кодов  
  Стандартные элементы >>> ListBox  
     
  Описание элемента ListBox  
  Элемент ListBox предоставляют пользователю выбрать значение из списка данных. Отдельные пункты элемента ListBox выбираются с помощью мыши. Добавлять пункты в элемент ListBox можно с помощью программного кода, либо устанавливая значение свойство List в окне свойств. Каждый пункт следует вводить отдельной строкой, нажимая комбинацию клавиш Ctrl + Enter. Завершив ввод пунктов, нажмите клавишу Enter, и они отобразятся в элементе ListBox на форме.В этой статье будут рассмотрены свойства и методы элемента ListBox.

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

Некоторые свойства элементов ListBox можно установить только в режиме проектирования. Именно они определяют функциональные возможности элемента, которые нельзя изменять во время работы приложения.

Свойство MultiSelect

Определяет метод выборки пунктов списка. Его значение задается при конструировании. Во время работы приложения значение свойства доступно только для чтения. Значение свойства MultiSelect определяет, может ли пользователь выбрать несколько пунктов списка и метод выборки.

Значение - Описание

0 - Выбор нескольких пунктов запрещен (по умолчанию)

1 - Простой выбор нескольких пунктов. Щелчок кнопкой мыши (или нажатие клавиши пробела) выбирает или отменяет пункт списка. Для перемещения фокуса на другой пункт используйте клавиши со стрелкой

2 - Расширенный выбор нескольких пунктов. Для выбора нескольких пунктов подряд нажмите клавишу Shift, а затем щелкайте на пунктах мышью (или нажимайте клавиши со стрелкой). Все пункты списка между ранее выбранным и текущим пунктами подсветятся. Чтобы выбрать произвольно расположенные элементы списка (или отменить выбор), нажмите клавишу Ctrl и щелкните на пункте кнопкой мыши

Свойство Sorted

С помощью приложения в списки элементов ListBox можно вставлять новые пункты, но программист тоже должен позаботиться об этом. Если необходимо, чтобы пункты всегда были отсортированы, установите значение свойства Sorted равным True. Сделать это можно только во время проектирования: во время выполнения оно доступно только для чтения. Элемент ListBox является текстовым элементом, т. е. сортировать числовые данные он не может. Чтобы использовать элемент ListBox для сортировки чисел, прежде всего, отформатируйте их, добавив нули в начале каждого числа. Так, число 10 всегда будет отображаться перед числом 5, поскольку строка "10" меньше строки "5" (она начинается с единицы). Если же числа форматировать как "010" и "005", то сортировка будет корректна. Пункты в элементе ListBox сортируются по возрастанию с учетом регистра. Более того, стандартные установки изменить невозможно. Элементы "aa", "aA", "AA, "Aa", "Ba" и "BA" сортируются следующим образом. "AA" "Aa" "aA" "aa" "BA "Ba" Как видите, символы верхнего регистра появляются впереди тех же символов нижнего. Все слова, начинающиеся с буквы В, появляются после слов, начинающихся с А, но перед словами, начинающимися с буквы С. В пределах группы слов, начинающихся с буквы В, сначала отображаются слова, начинающихся с буквы В, а вслед за ними идут слова, начинающиеся с буквы b.

Свойство Style

Определяет внешний вид элемента. Имеет два значения: 1 - Standard и 2 — Checkbox. Обратите внимание: левый список не отсортирован, а правый — отсортирован.

Методы элемента ListBox

Для управления элементом ListBox из приложения необходимо иметь возможность:
• добавлять пункты в список;
• удалять пункты из списка;
• выбирать отдельные пункты списка.

Метод Additem

Чтобы добавлять пункты в список, используется метод Additem. Он имеет следующий синтаксис:

List1.Additem item, index

Параметр item - это строка, добавляемая в список, a index - ее порядковый номер. Порядковый номер первого элемента списка равен нулю. Аргумент index необязателен. Если его опустить, строка добавляется в конец списка. Если значение свойства Sorted элемента установлено равным True, то пункт вставляется в соответствующее место списка, независимо от значения аргумента index.

Метод RemoveItem

Чтобы удалить пункт из списка, найдите его положение (index) в списке: index необходим методу RemoveItem.

List1.Removeltem Index

Параметр index указывает на порядковый номер удаляемого пункта и является обязательным. Следующий оператор удаляет пункт из начала списка. List1.Removeltem ()

Метод Clear

Удаляет из списка элемента все пункты. Синтаксис метода несложен. List1.Clear Чтобы получить доступ к отдельным пунктам, можно использовать несколько свойств элемента ListBox. Для удаления пункта из списка необходимо знать его порядковый номер, но в данном случае этот аргумент метода RemoveItem используется редко. Как правило, удаляемый пункт выбирает пользователь либо удаляемые пункты выбирают из программного кода по их значениям. Некоторые свойства элемента ListBox позволяют считывать пункты из программного кода (эти свойства рассматриваются).

Другие свойства

Свойство ListCount

Возвращает число пунктов списка. Доступ к ним можно получить с помощью значений индексов в диапазоне от 0 до ListCount-1.

Свойство List()

Это массив пунктов списка. Элемент массива List(0) содержит первый пункт списка, элемент List(1) - второй и т.д., вплоть до последнего элемента - List(ListCount-1), содержащего последний пункт списка. Массив List() часто используют для просмотра пунктов списка. Для просмотра всех пунктов элемента управления List1 с целью отыскания и удаления пустых строк применяйте следующий цикл.

For item = List1.ListCount – 1 to 0 Step – 1
If List1.List(item) = "" Then
List1.RemoveItem item
End If
Next

Обратите внимание: данный цикл сканирует элементы массива List() с конца. Понимаете, почему? При удалении каждого пункта длина списка уменьшается на 1. Если сканировать список с начала, число итераций превысит число пунктов списка, что ведет к ошибке исполнения. Если же сканировать список с конца, эта ошибка исключается.

Свойство ListIndex

ListIndex представляет собой индекс выбранного пункта списка. При выборке нескольких пунктов ListIndex представляет индекс последнего выбранного пункта. Если не выбран ни один элемент, значение .ListIndex = -1. Это свойство можно использовать для выбора или удаления конкретных пунктов. Так, следующий оператор удаляет выбранный пункт элемента List 1: List1.RemoveItem List1.ListIndex Для выделения определенного элемента используйте List1.ListIndex = 2 Если при вызове метода RemoveItem ни один пункт списка не выбран, значение свойства ListIndex отрицательно. Попытки удалить пункт с отрицательным индексом приводят к ошибке исполнения. Чтобы избежать этого, проверьте значение свойства ListIndex.

If List1.ListIndex >= 0 Then
List1.RemoveItem List1.ListIndex
End If

После удаления пункта индексы последующих пунктов соответственно перестраиваются.

Свойство Selected

Selected представляет собой массив, подобный свойству List. Его элементы могут иметь значения True или False в зависимости от состояния соответствующего пункта списка. Если пункт списка выбран, значение свойства Selected данного пункта равно True. В противном случае значение свойства равно False. Поскольку отсутствуют средства, позволяющие получить сразу все индексы при выборке нескольких пунктов, необходимо проверить все элементы массива Selected (чуть позже будет приведен соответствующий пример).

Свойство SelCount

Отображает число выбранных пунктов элемента ListBox, если значение свойства MultSelect установлено равным 1 (Simple) или 2 (Extended). Обычно это свойство используют вместе с массивом Selected для работы с выбранными пунктами элемента. Если элемент ListBox допускает выборку множества пунктов, рекомендуем применить в списке стиль Checkbox (Флажок). Чтобы пункты списка отмечались флажками (рис. 5.6), установите значение свойства Style равным 1.

Свойство NewIndex

Возвращает индекс последнего пункта включенного в список элемента ListBox. Обычно это свойство используют вместе со свойством ItemData, который рассматривается в параграфе "Индексирование с помощью элемента ListBox".

Индексирование с помощью элемента ListBox

Ключевым свойством элемента ListBox является свойство ItemData — массив, подобный массиву List. Однако вместо строк, появляющихся в элементе, он содержит числа. Каждый пункт, отображаемый элементом ListBox, состоите двух частей: строки (задаваемой свойством List(i)) и числа, задаваемого свойством ItemData(i) (здесь i — индекс пункта списка). Свойство ItemData — это значение типа Long, которое может сохранять числовую информацию любого типа, относящуюся к пункту списка, но не отображаемую в списке. Так, в массиве List() можно сохранять список имен сотрудников, а в массиве ItemData() - данные об их зарплате. Доступ к записям о каждом сотруднике можно получать по имени, а зарплату отображать в элементе TextBox, помещенном на ту же форму. Однако истинная ценность свойства ItemData состоит не в хранении дополнительной информации, относящейся к пункту. Действительно, единственного числа явно недостаточно для хранения существенной дополнительной информации. Предположим, необходимо поддерживать список имен и адресов. Хранить все эти записи в элементе ListBox непрактично: элемент должен быть слишком широким, чтобы вместить всю строку с именем, адресом, городом, номером телефона и т.д. Практичнее хранить в элементе ListBox имена, используя их как ключи для доступа к элементам массива, в котором хранится остальная информация. Каждая запись хранится в элементе массива, соответствующем одному из пунктов элемента ListBox. Если установить значение свойства ItemData равным индексу соответствующего элемента массива данных, то при необходимости можно получить немедленный доступ к записям массива. Этот подход применим и к файлам с произвольным доступом (значение свойства ItemData равно числу совпадающих записей).


 
     
  VBNet online (всего: 52050)  
 

Логин:

Пароль:

Регистрация, забыли пароль?


В чате сейчас человек
 
     
  VBNet рекомендует  
   
     
  Лучшие материалы  
 
ActiveX контролы (112)
Hitman74_Library (36119)
WindowsXPControls (20739)
FlexGridPlus (19374)
DSMAniGifControl (18295)
FreeButton (15157)
Примеры кода (546)
Parol (18027)
Passworder (9299)
Screen saver (7654)
Kerish AI (5817)
Folder_L (5768)
Статьи по VB (136)
Мое второе впечатление... (11236)
VB .NET: дорога в будущее (11161)
Основы SQL (9225)
Сообщения Windows в Vi... (8788)
Классовая теория прогр... (8619)
 
     
Техническая поддержка MTW-хостинг | © Copyright 2002-2011 VBNet.RU | Пишите нам