Что такое список в Windows
Обновлено: 21.11.2024
Элементы управления Windows: списки
Введение в списки
В окне списка представлен список элементов, из которых можно выбрать. Каждый элемент отображается в строке. Пользователь делает выбор, щелкая в списке. После щелчка элемент или строка, на которой остановилась мышь, выделяются, указывая на то, что это текущий выбор. Вот пример:
После того, как элемент был выбран, чтобы сделать другой выбор, пользователь должен щелкнуть другой элемент. Новый выбранный элемент становится выбранным или выделенным; ранее выбранный элемент теряет свой атрибут выделения. Пользователь также может изменить выбор, нажимая клавиши со стрелками вверх или вниз.
Списки делятся на два типа: одиночный и множественный выбор. Вторая категория позволяет пользователю выбирать более одного элемента, нажимая Ctrl для случайного выбора элементов или нажимая Shift для выбора элементов в диапазоне.
Одной из основных причин использования списка является отображение списка элементов для пользователя. Иногда список был очень большим. Если список длиннее, чем доступная клиентская область элемента управления, элемент управления будет оснащен полосой прокрутки, которая позволяет пользователю перемещаться вверх и вниз для доступа ко всем элементам списка. У вас будет возможность решить, сколько элементов отображать в списке.
Практическое обучение: знакомство со списками
- Запустите Microsoft Visual Studio
- Чтобы начать новый проект, в главном меню выберите "Файл" -> "Новый проект".
- В среднем списке выберите Приложение Windows Forms.
- Установите имя SQLTutorial1.
- Нажмите "ОК".
Создание списка
В наших приложениях имена элементов управления на основе списка будут во множественном числе. Это не правило и не основано на каком-либо предвзятом стандарте.
Практическое обучение: добавление списка
Элементы списка
Как и в случае с любым другим элементом управления, при создании списка убедитесь, что вы дали ему имя. Как только поле со списком размещено в контейнере, как это делается с другими элементами управления, вы можете переместить его, щелкнув и перетащив элемент управления. Вы также можете изменить его размер, используя любой из методов, которые мы изучили, чтобы добавить, расположить, переместить и изменить размер элементов управления. Если список будет охватывать много элементов, спроектируйте его таким образом, чтобы его высота позволяла одновременно отображать 8 элементов. В противном случае для списка из 8 или менее элементов используйте только необходимую высоту, чтобы вместить все элементы.
Визуальное добавление элементов в список
Самой важной характеристикой списка является список содержащихся в нем элементов. Этот список представлен свойством Items. Список Items создается и управляется вложенным в ListBox классом с именем ObjectCollection. ObjectCollection — это класс коллекции, реализующий интерфейсы IList, ICollection и IEnumerable.
Во время разработки, чтобы создать список элементов, откройте окно "Свойства" списка и нажмите кнопку с многоточием в поле "Элементы". Это откроет редактор коллекции строк:
В пустом окне вы можете ввести элемент, нажать Enter, добавить еще один и т. д. После создания списка вы можете нажать OK.
Практическое обучение: визуальное добавление элементов в список
- В форме щелкните правой кнопкой мыши список и выберите "Редактировать элементы".
- В редакторе коллекции строк введите следующее:
- Чтобы протестировать приложение, в главном меню выберите "Отладка" > "Начать отладку".
- Закройте форму и вернитесь в среду программирования.
Программное добавление элементов в список
Чтобы программно добавить элемент в список, откройте свойство Items, вызовите его функцию-член Add() и передайте новый элемент. Вы можете делать это постоянно для каждого элемента. Вот примеры:
Это даст:
Вы также можете сначала создать массив элементов, а затем добавить этот массив в коллекцию. Для поддержки этого класс ObjectCollection предоставляет функцию-член AddRange(). Вот пример:
Это даст:
Если вы используете функцию-член Add() или AddRange() для добавления элемента или группы элементов, элемент или группа будут добавлены в конец списка, если список уже существует. Чтобы вставить новый элемент где-нибудь внутри списка, вызовите функцию-член Insert().
Практическое обучение: программное добавление элементов в список
Список из нескольких столбцов
При создании списка элементы отображаются в одном столбце. Если количество элементов превышает высоту, на элементе управления появится полоса прокрутки. Альтернативой, которую вы можете использовать, является расширение списка более чем на один столбец. Для этого класс ListBox оснащен логическим свойством MultiColumn. Во время разработки вы можете установить эту характеристику в окне свойств. По умолчанию для параметра MultiColumn установлено значение False, что означает, что элементы отображаются в одном столбце.Если установить для этого свойства значение True, то компилятор решит, нужны ли элементу управления столбцы и когда, исходя из количества элементов в списке. Затем вы можете указать ширину каждого столбца с помощью свойства ColumnWidth.
Промежуточные операции со списком
Операции перетаскивания
Существуют различные способы вовлечения списка в операцию перетаскивания. Например, чтобы добавить элемент в список, вы можете разрешить пользователю перетаскивать его из другого элемента управления или объекта в список. Вы также можете разрешить пользователю перетаскивать элементы списка из одного списка в другой.
Для поддержки операций перетаскивания окно со списком снабжено свойством AllowDrop. Поэтому, если вы хотите реализовать эту операцию, сначала установите для свойства AllowDrop значение true. Вот пример:
Чтобы создать сценарий перетаскивания, необходимо реализовать событие DragEnter целевого элемента управления, чтобы узнать, что перетаскивает пользователь. Чтобы поместить элемент в цель, вы должны реализовать его событие DragDrop. Вот пример двух списков, который позволяет пользователю перетаскивать элемент из исходного списка в целевой список:
Настраиваемое поле списка для рисования владельцем
Список окрашен на основе трех типов или стилей. Эта характеристика управляется свойством DrawMode. Если для него установлено значение Normal, операционная система будет регулярно рисовать каждый элемент списка. Если вы хотите, чтобы каждый элемент списка отображал графику или цвет, вы должны установить стиль на тип, нарисованный владельцем. Значение OwnerDrawFixed позволяет установить желаемую, но одинаковую высоту для каждого элемента списка. Эта высота управляется через свойство ItemHeight. Вы можете установить разную высоту для каждого элемента, если установите стиль списка OwnerDrawVariable.
ListBox представляет собой элемент управления Windows, отображающий список элементов для пользователя. Пользователь может выбрать элемент из списка. Он позволяет программисту добавлять элементы во время разработки с помощью окна свойств или во время выполнения.
Давайте создадим список, перетащив элемент управления ListBox из панели инструментов на форму.
Вы можете заполнить элементы списка либо из окна свойств, либо во время выполнения. Чтобы добавить элементы в ListBox, выберите элемент управления ListBox и перейдите в окно свойств для свойств этого элемента управления. Нажмите кнопку с многоточием (. ) рядом со свойством Items. Откроется диалоговое окно Редактор набора строк, в котором можно ввести значения по одному в строке.
Свойства элемента управления ListBox
Ниже приведены некоторые часто используемые свойства элемента управления ListBox.
Разрешить выбор
Получает значение, указывающее, позволяет ли ListBox в настоящее время выбирать элементы списка.
Стиль границы
Получает или задает тип границы, нарисованной вокруг списка.
Ширина столбца
Gets of устанавливает ширину столбцов в многостолбцовом списке.
Горизонтальный экстент
Получает или задает область горизонтальной прокрутки списка.
Горизонтальная полоса прокрутки
Получает или задает значение, указывающее, отображается ли в списке горизонтальная полоса прокрутки.
Получает или задает высоту элемента в списке.
Получает элементы списка.
Несколько столбцов
Получает или задает значение, указывающее, поддерживает ли список несколько столбцов.
ПрокручиватьВсегдаВидимо
Получает или задает значение, указывающее, отображается ли вертикальная полоса прокрутки всегда.
Выбранный индекс
Получает или задает отсчитываемый от нуля индекс текущего выбранного элемента в списке.
Выбранные индексы
Получает коллекцию, содержащую отсчитываемые от нуля индексы всех выбранных в данный момент элементов в списке.
Выбранный элемент
Получает или задает текущий выбранный элемент в списке.
Выбранные элементы
Получает коллекцию, содержащую элементы, выбранные в данный момент в списке.
Выбранное значение
Получает или задает значение свойства члена, указанного свойством ValueMember.
Режим выбора
- Нет
- Один
- Мультипростой
- Многорасширенный
Получает или задает значение, указывающее, отсортированы ли элементы в списке в алфавитном порядке.
Получает или ищет текст выбранного в данный момент элемента в списке.
Получает или задает индекс первого видимого элемента списка.
Методы элемента управления ListBox
Ниже приведены некоторые из наиболее часто используемых методов элемента управления ListBox.
Начать обновление
Предотвращает отрисовку элемента управления до тех пор, пока не будет вызван метод EndUpdate, пока элементы добавляются в ListBox по одному.
Очистить выбранное
Отменяет выбор всех элементов в ListBox.
Возобновляет отрисовку списка после того, как он был отключен методом BeginUpdate.
Находит первый элемент в ListBox, который начинается со строки, указанной в качестве аргумента.
НайтиТочнуюСтроку
Находит первый элемент в ListBox, точно соответствующий указанной строке.
Получить выбранное
Возвращает значение, указывающее, выбран ли указанный элемент.
Установить выбранное
Выбирает или снимает выделение с указанного элемента в ListBox.
OnSelectedIndexChanged
Вызывает событие SelectedIndexChanged.
OnSelectedValueChanged
Вызывает событие SelectedValueChanged.
События элемента управления ListBox
Ниже приведены некоторые из наиболее часто используемых событий элемента управления ListBox.
Происходит при выборе списка.
SelectedIndexChanged
Происходит при изменении свойства SelectedIndex списка.
Подробный список свойств, методов и событий элемента управления ListBox см. в документации Microsoft.
Пример 1
В следующем примере давайте добавим список во время разработки и добавим в него элементы во время выполнения.
Выполните следующие действия –
Перетащите на форму две метки, кнопку и элемент управления ListBox.
Установите свойство Text первой метки, чтобы предоставить заголовок "Выберите свое любимое направление для получения высшего образования".
Установите свойство Text второй метки, чтобы указать заголовок "Назначение". Текст на этой метке изменится во время выполнения, когда пользователь выберет элемент в списке.
Нажмите на поле со списком и кнопки управления, чтобы добавить следующие коды в редакторе кода.
Когда приведенный выше код выполняется и запускается с помощью кнопки «Пуск», доступной на панели инструментов Microsoft Visual Studio, отображается следующее окно —
Когда пользователь выбирает пункт назначения, текст во второй метке меняется –
При нажатии кнопки «Выбрать» отображается окно сообщения с выбором пользователя —
Пример 2
В этом примере мы заполним список элементами, получим общее количество элементов в списке, отсортируем список, удалим некоторые элементы и очистим весь список.
Дизайн формы —
Добавьте следующий код в окно редактора кода —
Когда приведенный выше код выполняется и запускается с помощью кнопки «Пуск», доступной на панели инструментов Microsoft Visual Studio, отображается следующее окно —
Веб-разработка, языки программирования, тестирование программного обеспечения и другое
- ListBox.ObjectCollection: этот класс коллекции содержит все элементы элемента управления ListBox.
- ListBox.SelectedObjectCollection: этот класс коллекции содержит коллекцию выбранных элементов в элементе управления ListBox.
- ListBox.SelectedIndexCollection: этот класс коллекции содержит коллекцию выбранных индексов, эти элементы являются подмножеством индексов ListBox.ObjectCollection и специально выбранных индексов в элементе управления ListBox.
- Single Selected ListBox: ListBox может выбрать только один элемент из списка.
- Multi Selected ListBox: ListBox может выбирать несколько элементов из списка.
ListBox можно создать двумя способами:
1. Время разработки
Сначала очень легко создать без кода. Шаги по созданию проекта
Шаг 1. Откройте Visual Studio
Нажмите Файл=>Создать=>Проект
.Выберите =>Приложение Windows Form, затем
Назовите проект и нажмите OK, после чего появится вкладка Form1.cs(Design), как показано ниже
Шаг 2. В левой части визуальной студии или в разделе «Вид» выберите «Панель инструментов», затем перетащите необходимые элементы в форму Form1.cs(Design), как показано на изображении выше.
Шаг 3. После перетаскивания выберите свойства в правой части Visual Studio и дайте имя свойству Text. Это используется для написания кода во втором методе Run-Time.
Вывод:
2. Время выполнения
Шаг 1. Создайте элемент управления ListBox с помощью конструктора ListBox().
Синтаксис:
ListBox listBox = новый ListBox();
Шаг 2. После создания свойства ListBox, если мы хотим установить свойства ListBox, такие как Font, Font.Size, Color для элементов и т. д.
Синтаксис:
listBox.Location = новая точка (200, 100);
listBox.Size = новый размер (100, 90);
listBox.ForeColor = Color.Red;
Шаг 3. Добавьте элементы в ListBox.
Синтаксис:
listBox.Items.Добавить("A");
listBox.Items.Добавить("В");
listBox.Items.Add("C");
listBox.Items.Add("D");
Шаг 4. Добавьте этот ListBox в форму.
Синтаксис:
Вот следующие примеры, упомянутые ниже
Код:
Вывод:
Код:
Вывод:
Перед вводом значения:
Не вводя значения, попробуйте нажать кнопку "Сохранить":
После ввода значения:
После ввода значения и нажатия кнопки "Сохранить":
Код:
Вывод:
После добавления 3 имен:
Удаление выбранного элемента:
Изменить шрифт значений:
Заключение
Рекомендуемые статьи
В прошлой статье мы рассмотрели ItemsControl, вероятно, самый простой список в WPF. Элемент управления ListBox — это следующий элемент управления в очереди, который добавляет немного больше функциональных возможностей. Одним из основных отличий является тот факт, что элемент управления ListBox фактически работает с выборками, позволяя конечному пользователю выбирать один или несколько элементов из списка и автоматически предоставляя визуальную обратную связь для этого.
Вот пример очень простого элемента управления ListBox:
Это очень просто: мы объявляем элемент управления ListBox, а внутри него мы объявляем три элемента ListBoxItem, каждый со своим собственным текстом. Однако, поскольку ListBoxItem на самом деле является ContentControl, мы можем определить для него пользовательский контент:
Для каждого элемента ListBoxItem мы теперь добавляем StackPanel, в который мы добавляем изображение и текстовый блок. Это дает нам полный контроль над содержимым, а также над визуализацией текста, как видно из снимка экрана, где для каждого числа используются разные цвета.
На снимке экрана вы также можете заметить еще одно отличие при сравнении ItemsControl и ListBox: по умолчанию вокруг элемента управления отображается рамка, что делает его похожим на фактический элемент управления, а не просто на вывод.
Привязка данных к ListBox
Ручное определение элементов для ListBox является прекрасным первым примером, но в большинстве случаев ваши элементы управления ListBox будут заполнены элементами из источника данных с использованием привязки данных. По умолчанию, если вы привязываете список элементов к ListBox, их метод ToString() будет использоваться для представления каждого элемента. Это редко то, что вам нужно, но, к счастью, мы можем легко объявить шаблон, который будет использоваться для отображения каждого элемента.
Я повторно использовал пример на основе TODO из статьи ItemsControl, где мы создаем классный список TODO, используя простой класс кода программной части и, в данном случае, элемент управления ListBox для визуального представления. Вот пример:
Все волшебство происходит в ItemTemplate, который мы определили для ListBox.Там мы указываем, что каждый элемент ListBox должен состоять из сетки, разделенной на два столбца, с TextBlock, показывающим заголовок в первом столбце, и ProgressBar, показывающим статус завершения во втором столбце. Чтобы получить значения, мы используем очень простую привязку данных, которая объясняется в части привязки данных этого руководства.
В файле кода программной части мы объявили очень простой класс TodoItem для хранения каждого из наших элементов TODO. В конструкторе окна мы инициализируем список, добавляем в него три элемента TODO, а затем присваиваем его ItemsSource элемента ListBox. Сочетание ItemsSource и ItemTemplate, которое мы указали в части XAML, — это все, что нужно WPF для отображения всех элементов в виде списка TODO.
Обратите внимание на свойство HorizontalContentAlignment, для которого я установил значение Stretch в ListBox. Выравнивание содержимого по умолчанию для элемента ListBox — по левому краю, что означает, что каждый элемент занимает ровно столько места по горизонтали, сколько ему нужно. Результат? Ну, не совсем то, что нам нужно:
При использовании выравнивания "Растянуть" каждый элемент растягивается, чтобы занять все доступное пространство, как видно из предыдущего снимка экрана.
Работа с выбором ListBox
Как уже упоминалось, ключевое различие между ItemsControl и ListBox заключается в том, что ListBox обрабатывает и отображает выбор пользователя. Поэтому многие вопросы ListBox крутятся вокруг того, как работать с выбором. Чтобы помочь с некоторыми из этих вопросов, я создал большой пример, показывающий некоторые приемы, связанные с выбором:
Как вы видите, я определил ряд кнопок справа от ListBox, чтобы либо получить выбор, либо управлять им. Я также изменил SelectionMode на Extended, чтобы можно было выбирать несколько элементов. Это можно сделать либо программно, как я делаю в примере, либо конечным пользователем, удерживая нажатой клавишу [Ctrl] или [Shift], щелкая элементы.
Обзор
Элемент управления ListBox очень похож на ItemsControl, и здесь можно использовать некоторые из тех же методов. ListBox предлагает немного больше функциональных возможностей по сравнению с ItemsControl, особенно обработку выбора. Чтобы получить дополнительные функциональные возможности, такие как заголовки столбцов, вам следует взглянуть на элемент управления ListView, подробное описание которого приводится далее в этом руководстве с несколькими статьями, объясняющими все функциональные возможности.
Вашего предпочтительного языка нет в списке? Нажмите здесь, чтобы помочь нам перевести эту статью на ваш язык!
Читайте также: