Чем listbox отличается от listview
Элемент ListView представляет список, но с более расширенными возможностями, чем ListBox. В ListView можно отображать сложные данные в различных стобцах, можно задавать данным изображения и пиктограммы.
ListViewItem
Все элементы, как и в других списковых визуальных компонентах, задаются с помощью свойства Items . Но в отличие от ListBox или ComboBox, если мы через панель Свойств откроем окно редактирования элементов ListView:

Каждый отдельный элемент в ListView представляет объект ListViewItem . В окне редактирования элементов мы также можем добавлять и удалять элементы списка. Но кроме того, здесь также мы можем выполнить дополнительную настройку элементов с помощью следующих свойств:
- BackColor : фоновый цвет элемента
- Checked : если равно true, то данный элемент будет отмечен
- Font : шрифт элемента
- ForeColor : цвет шрифта
- Text : текст элемента
- ToolTipText : текст всплывающей подсказки, устанавливаемой для элемента
- UseItemStyleForSubItems : если равно true, то стиль элемента будет также использоваться и для всех его подэлементов
- Group : задает фоновый цвет элемента
- ImageIndex : получает или задает индекс изображения, выводимого для данного элемента
- ImageKey : получает или задает индекс изображения для данного элемента
- StateImageIndex : получает или задает индекс изображения состояния (например установленного или снятого флажка, указывающего состояние элемента)
- SubItems : коллекция подэлементов для данного элемента ListViewItem
- Tag : тег элемента
- IdentCount : устанавливает отступ от границ ListViewItem до используемого им изображения
Это только те свойства, которые мы можем задать в окне редактирования элементов ListView. Но потом все добавляемые элементы мы сможем увидеть в ListView:

Чтобы добавить к элементам в ListView флажки, кроме задания свойства Checked у каждого отдельного элемента ListViewItem, надо также у свойства CheckBoxes у самого объекта ListView установить значение true .
Изображения элементов
Для добавления элементам изображений у ListView есть несколько свойств:
- LargeImageList : задает список ImageList, изображения которого будут использоваться для крупных значков
- SmallImageList : задает список ImageList, изображения которого будут использоваться для мелких значков
- StateImageList : задает список ImageList, изображения которого будут использоваться для разных состояний
Пусть у нас есть некоторый ImageList с изображениями. Зададим этот ImageList для свойств LargeImageList и SmallImageList.
Тогда при добавлении новых элементов мы можем указать индекс изображение из ImageList, которое будет использоваться элементом:

Тогда в приложении вместе с текстыми метками элементов можно будет увидеть и изображения:

Типы отображений
С помощью свойства View у элемента ListView можно задать тип отображения, который принимает следующие значения:
- Details : отображение в виде таблицы
- LargeIcon : набор крупных значков (применяется по умолчанию)
- List : список
- SmallIcon : набор мелких значков
- Tile : плитка
При отображении в виде таблицы также надо задать набор столбцов в свойстве Columns у ListView:

В данном случае я указал один столбец, у которого заголовок будет «Страна». Если у элементов ListViewItem были бы подэлементы, то можно было бы также задать и столбцы для подэлементов.
Кроме рассмотренных выше свойств ListView надо еще отметить некоторые. Свойство MultiSelect при установке в true позволяет выделять несколько строк в ListView одновременно.
Свойство Sorting позволяет задать режим сортировки в ListView. По умолчанию оно имеет значение None , но также можно установить сортировку по возрастанию (значение Ascending ) или сортировку по убыванию (значение Descending )
ListView. Практика
Выполним небольшую практическую задачу: выберем все названия файлов из какой-нибудь папки в ListView.

Во-первых добавим на форму элементы TextBox (для ввода названия папки, файлы которой надо получить), Button (для запуска получения) и ListView.
Чтобы все файлы имели какое-нибудь изображение, добавим на форму ImageList с именем imageList1 и поместим в него какую-нибудь картинку.
У ListView для свойства View установим значение SmallIcon .
Все остальное сделаем в коде формы:
using System; using System.ComponentModel; using System.IO; using System.Windows.Forms; namespace HelloApp < public partial class Form1 : Form < public Form1() < InitializeComponent(); listView1.SmallImageList = imageList1; >private void button1_Click(object sender, EventArgs e) < string path = textBox1.Text; // получаем все файлы string[] files = Directory.GetFiles(path); // перебор полученных файлов foreach(string file in files) < ListViewItem lvi = new ListViewItem(); // установка названия файла lvi.Text = file.Remove(0, file.LastIndexOf('\\') + 1); lvi.ImageIndex = 0; // установка картинки для файла // добавляем элемент в ListView listView1.Items.Add(lvi); >> > >
What is The difference between ListBox and ListView
What is the difference between WPF’s ListBox and ListView? I can not find any significant difference in their properties. Is there different typical use?
asked Jan 16, 2011 at 3:30
17.3k 48 48 gold badges 154 154 silver badges 246 246 bronze badges
Not mentioned in answers: ListView has column headers, ListBox does not
May 14, 2021 at 18:27
3 Answers 3
A ListView is basically like a ListBox (and inherits from it), but it also has a View property. This property allows you to specify a predefined way of displaying the items. The only predefined view in the BCL (Base Class Library) is GridView , but you can easily create your own.
Another difference is the default selection mode: it’s Single for a ListBox , but Extended for a ListView
738 3 3 gold badges 20 20 silver badges 39 39 bronze badges
answered Jan 16, 2011 at 3:37
Thomas Levesque Thomas Levesque
288k 70 70 gold badges 623 623 silver badges 759 759 bronze badges
A ListView let you define a set of views for it and gives you a native way ( WPF binding support) to control the display of ListView by using defined views .
Example:
XAML
" Name="listv" MouseEnter="listv_MouseEnter" MouseLeave="listv_MouseLeave"> " /> " /> " />
Code Behind:
private int viewType; public int ViewType < get < return viewType; >set < viewType = value; UpdateProperty("ViewType"); >> private void listv_MouseEnter(object sender, MouseEventArgs e) < ViewType = 1; >private void listv_MouseLeave(object sender, MouseEventArgs e)
OUTPUT:
Normal View: View 2 in above XAML

MouseOver View: View 1 in above XAML

If you try to achieve above in a ListBox , probably you’ll end up writing a lot more code for ControlTempalate / ItemTemplate of ListBox .
Решенные Difference between List View and List Widget?

What is the difference between a List View and a List Widget? If I’m converting a Visual Studio List Box in a dialog, which one should I use (View or Widget)?

Christian Ehrlicher Lifetime Qt Champion отредактировано
Isn’t the documentation clear enough? http://doc.qt.io/qt-5/qlistwidget.html#details
QListWidget is a convenience class that provides a list view similar to the one supplied by QListView, but with a classic item-based interface for adding and removing items. QListWidget uses an internal model to manage each QListWidgetItem in the list.
Qt has to stay free or it will die.
Online Installer direct download: https://download.qt.io/official_releases/online_installers/
mrjj Lifetime Qt Champion @Sprezzatura отредактировано
- If I’m converting a Visual Studio List Box in a dialog, which one should I use (View or Widget)?
Well the ListWidget resembles more how a traditional listbox works.
That said, using a model ( ListView) allows for automatic updates to the model
if the Data in the listbox changes. This can be very handy if the data represented in the
«listbox» is shared/replicated among other widgets.
If you already have such synchronization in place, or the data is not shared,
ListWidget might be the fastest route for conversion.
So I would say it mostly depends on the way the listbox data is used/shared/what it represents.

Sprezzatura отредактировано
Thank you @mrjj for a useful answer, that’s the kind of high-level overview answer I was looking for. I’m using a plain, ordinary list box where the items are displayed but not edited by the user.
mrjj Lifetime Qt Champion @Sprezzatura отредактировано
@Sprezzatura
hi
well if the LB items are not shared with other structures / updated often, i would
go with ListWidget as more changes to the code seems required to take full advantage of having a model.
Чем listbox отличается от listview
15,768,009 members
Sign in
Sign in with

Advertise
Privacy
Cookies
Terms of Use
Last Updated 13 Sep 2011
Copyright © CodeProject, 1999-2023
All Rights Reserved.
CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900