Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782

Несколько вопросов по ListView

07.11.2009, 00:53. Показов 3943. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я создаю ListView используя данные из List.
Возникло несколько вопросов:

1) Как выделить следующий или предыдущий элемент, кликнув на соответствующую кнопку?
2) Как отсортировать элементы ListView?
Эта функция как в Windows при просмотре папки как таблицу. На колонке есть стрелочка вверх/вниз. В соответствии с ней элементы упорядочиваются по возрастанию/убыванию.
3) Есть Label, который отображает номер выделенного элемента, я заполняю его таким кодом:
C#
1
2
3
4
5
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
{
    System.Windows.Forms.ListView lw = (System.Windows.Forms.ListView)sender;
    labelCurrentPath.Text = lw.SelectedItems[0].Index.ToString();
}
Когда нажимаю на элемент первый раз, то номер отображается правильно, но при последующем нажатии выбрасывается исключение. Когда нажимаю "Continue", то снова номер элемента отображается правильно.
В чём тут ошибка?

Добавлено через 3 минуты
И ещё.
Если мне нужно удалить элемент из ListView, то соответственно, мне нужно удалить его из исходного List.
Можно ли получить напрямую доступ к List, или надо будет в нём искать этот элемент?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.11.2009, 00:53
Ответы с готовыми решениями:

Несколько вопросов
Всем привет. Только недавно начал работать с виндоуз формами, и сразу появилось несколько вопросов, которые не описаны в книжках (или я...

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

несколько методов и два listview
Как из этих двух строк превратить в одну listview1.Items.Add(Path.GetFileName(Dirs), 0); listview2.Items.Add(Path.GetFileName(Dirs),...

9
 Аватар для Konctantin
970 / 773 / 171
Регистрация: 12.04.2009
Сообщений: 1,700
07.11.2009, 01:35
Как-то так, и исключения не будет:
C#
1
2
3
4
5
System.Windows.Forms.ListView lw = (System.Windows.Forms.ListView)sender;
if (((System.Windows.Forms.ListView)sender).SelectedItems.Count > 0)
{
       labelCurrentPath.Text = lw.SelectedItems[0].Index.ToString();
}
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
07.11.2009, 01:48  [ТС]
С этим вопросом я уже разобрался.
Кстати, лучше так:
C#
1
labelCurrentPath.Text = lw.FocusedItem.Index.ToString();
Только с остальными пока не могу.
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
07.11.2009, 11:35
Смена выделенного (Написал на глаз, возможны ошибки.)
C#
1
2
3
int cur = lw.SelectedIndices[0];
lw.Items[cur].Checked = false;
lw.Items[cur+1].Checked = true;
Также необходимо будет добавить проверки..

Добавлено через 3 минуты
Удаление
C#
1
lw.Items.Remove(lw.SelectedItems[0]);
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
07.11.2009, 14:29  [ТС]
Так не работает.
Я попытался сделать так:
C#
1
2
3
4
5
6
  private void button1_Click(object sender, EventArgs e)
        {
            int ind = this.listView1.FocusedItem.Index; // Индекс выделенного элемента
            this.listView1.Items[ind].Checked = false;
            this.listView1.Items[ind + 1].Checked = true;
        }
Но и так не работает.
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
08.11.2009, 02:28  [ТС]
Есть ещё какие-нибудь способы выделить определённый элемент?
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
08.11.2009, 06:23
Это стандартные способы работы с контролом. Если у вас не работает, возможно, что-то не то у вас в проекте. Если не сложно, покажите проект.
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
08.11.2009, 11:46  [ТС]
Это пример из книги.
Там в файле Form1.cs в конце я пытался что-то реализовать, но не получилось.
ListView.rar
0
146 / 146 / 32
Регистрация: 26.10.2008
Сообщений: 782
08.11.2009, 13:20  [ТС]
Как выделить следующий элемент я разобрался:

C#
1
2
3
int index = this.listViewStaff.FocusedItem.Index;
            this.listViewStaff.Items[index].Selected = false;
            this.listViewStaff.Items[index + 1].Selected = true;
Теперь вопрос, как определить выделен ли вообще какой нибудь элемент.
Если ничего не выделено, то FocusedItem.Index возвращает 0, но ведь 0 - это ещё и первый элемент списка, но он не выделен.
Есть ещё способы определить, выделен ли какой-нибудь элемент?

Добавлено через 14 минут
И с этим вопросом я разобрался.

Скажите, как сделать сортировку элементов как в Windows при нажатии на заголовок таблицы?
0
1923 / 428 / 41
Регистрация: 12.07.2007
Сообщений: 2,062
09.11.2009, 02:28
Смотрите функционал ListView.Sort(), ListView.Sorting, ListView.ListViewItemSorter
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
09.11.2009, 02:28
Помогаю со студенческими работами здесь

Несколько вопросов по c#
class Program { object i = new object(); } Object - это основной ссылочный класс, который в данном случае имеет экземпляр...

Несколько вопросов C#.NET
Пишу на VC# Express 2008. Нужно чтобы в программы при нажатии на кнопку открывались интернет опции (свойства обозревателя) а встроеный в...

Несколько вопросов по Visual Studio
1. Как сделать, чтобы форма была прозрачной, а контролы и их содержимое - нет. 2. Как реализовать смену языка панели меню? нужен...

Пара вопросов о listView
Добрый день! Как добавить картинки listView? P.S Как сделать так, чтоб при наведении курсора на изображение в listView, оно...

Несколько вопросов.
Здравствуйте. У меня есть несколько вопросов по работе в делфи. 1.Подскажите пожалйста как сделать так что бы при нажатии на кнопку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru