Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/64: Рейтинг темы: голосов - 64, средняя оценка - 4.50
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685

Удаление из listview: строки поднимаются, а данные, к которым они были привязаны - остаются на месте

13.03.2010, 10:41. Показов 12210. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
у меня есть таблица - listView, в ней я отображаю данные, но после удаления строки - строки поднимаются, а данные, к которым они были привязаны - остаются на месте, как можно было бы реализовать подъем строки и дальнейшую синхронизацию с данными?
вот как удаляю:
C#
1
2
3
4
                ListViewItem lvi = listView8.SelectedItems[0];
                lvi = listView8.SelectedItems[0];
                lvi.Remove();
                f2.index--;
данные хранятся в массиве объектов созданного класса moderator, имеют 5 изменяющихся полей, но тк как после удалении строки они получаются не синхронизированными - изменение будет некорректно, я попросту буду менять не ту строку.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
13.03.2010, 10:41
Ответы с готовыми решениями:

Удаление строки, данные из которой были скопированы на другой лист
В приведенном ниже коде почему-то не удаляется строка данные из которой были скопированы на другой лист, подскажите пожалуйста, что я...

Сохранить программно созданные Image, чтобы при следующем запуске програмы они были на своем месте
Все привет. Помогите советом. Создаю в Run-Time N-ное количество TImage, вот код: procedure TfMain.CreateTech(Tech: string); begin ...

CoreData: данные выводятся не в том порядке, в котором они были сохранены
Здравствуйте! Недавно в iOS, пытаюсь разобраться с coredata, вопрос в том, что, сохраняю данные в coredata и когда делаю fetch и вывожу в...

12
 Аватар для d0s'A
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
15.03.2010, 07:35
Не совсем понял, может так?
C#
1
2
ListViewItem lvi = listView8.SelectedItems[0];
listView8.Items.Remove(lvi);
0
 Аватар для homich77
81 / 80 / 4
Регистрация: 06.04.2009
Сообщений: 326
15.03.2010, 10:17
d0s'A, похоже
0
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
16.03.2010, 21:00  [ТС]
d0s'A, можно и так, наверно, мой вариант в плане удаления работает, вопрос в другом, как после удаления сразу синхронизировать отображаемые данные в лв с переменными? Переписывать все переменные и считывать данные с таблицы только если..
0
 Аватар для d0s'A
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
17.03.2010, 16:41
Если я тебя правильно понял, то у тебя твой класс moderator ссылается на Индекс строки в ListView. Т.е. когда ты удаляешь строку из ListView,то данные, которые идут ниже удаляемог индекса должны быть смещены на -1. Так?
Если так то способ решить задачу много. Не зная как у тебя устроена коллекция moderator я тебе точно не скажу, как лучше было бы у тебя.
Но скажу пару примеров:
1) Класс moderator может ссылаться не на Индекс а на ListViewItem
2) Если Ты не хочешь на него ссылаться можно вместе с удалением ListViewItem из ListView удалять тот класс moderator, который тебе не нужен, и тогда те индексы сместятся на -1 (List<Int>)
3) Если ты не хочешь вообще удалять класс moderator, но хочешь удалить строку и переписать все индексы, то можешь добавить поле в moderator не отображать в ListView. И следую перезагрузка (синхронизация успешно сработает)
4) А правильно необходимо реализовать manager (Presenter в MVP, или Controller в MVC), который будет управлять и твоим Listview (View) и твоими данными (Model)

Если нет желания разбираться в шаблонах проектировани MVP, MVC. Скинь более подробный код как у тебя устроена работа.
0
Кодило
 Аватар для r0fL
251 / 179 / 23
Регистрация: 25.11.2009
Сообщений: 685
19.03.2010, 00:54  [ТС]
Исправил так: после удаления все элементы массива модерс переписываются заново с таблицы, может и не сильно правильно с точки зрения быстродействия, но тк данных будет не много - пойдет
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
                ListViewItem lvi = listView8.SelectedItems[0];
                lvi = listView8.SelectedItems[0];
                lvi.Remove();
                f2.index1--;
                for (int i = 0; i < listView8.Items.Count; i++)
                {
                    f2.moders[i].Nick = listView8.Items[i].Text;
                    f2.moders[i].Hours = Convert.ToInt32(listView8.Items[i].SubItems[1].Text);
                    f2.moders[i].Day_Hours = Convert.ToInt32(listView8.Items[i].SubItems[2].Text);
                    f2.moders[i].Night_Hours = Convert.ToInt32(listView8.Items[i].SubItems[3].Text);
                    f2.moders[i].Prog = Convert.ToInt32(listView8.Items[i].SubItems[4].Text);
                    f2.moders[i].Zamech = Convert.ToInt32(listView8.Items[i].SubItems[5].Text);
                }
0
 Аватар для d0s'A
153 / 113 / 25
Регистрация: 23.06.2008
Сообщений: 320
19.03.2010, 11:40
Используй вместо массива moders[i] - List<moder> - это список, с ним так же можно работать.

C#
1
2
3
4
5
ListViewItem lvi = listView8.SelectedItems[0];
lvi = listView8.SelectedItems[0];
f2.moders.RemoveAt(lvi.Index);
lvi.Remove();
f2.index1--;
0
QA
 Аватар для QA
9 / 9 / 2
Регистрация: 07.06.2011
Сообщений: 124
15.07.2011, 13:39
Интересная тема. Но вот возник вопрос.
Как же все таки удалить файл или папку с компа а не только с listView?
0
15.07.2011, 14:02

Не по теме:

Цитата Сообщение от QA Посмотреть сообщение
Интересная тема. Но вот возник вопрос.
Как же все таки удалить файл или папку с компа а не только с listView?
А какое отношение ListView имеет к папкам? Может сразу форматировать раздел при удалении итема?

0
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
15.07.2011, 14:15
Цитата Сообщение от QA Посмотреть сообщение
Как же все таки удалить файл или папку с компа а не только с listView?
Не знаю, как у тебя устроена программа, но можно при заполнении ЛистВью к каждому элементу привязывать путь к тому файлу или папке, которая в ЛистВью отображается. Записывать путь удобно в свойтсво tag. В этом свойстве лежит объект типа Object, т.е. засунуть туда можно что угодно, а следовательно можно даже и не путь, а сам объект файла/папки. Ну и при удалении пункта в ЛистВью ты можешь обратиться к свойтсву tag и удалять файл/папку.

Добавлено через 10 минут

Не по теме:

Цитата Сообщение от Bazzy Посмотреть сообщение
А какое отношение ListView имеет к папкам?
Как я понимаю - по мнению Microsoft, самое прямое, т.к. подобным образом и отображаются файлы/папки/диски в их ос Windows...
Цитата Сообщение от Bazzy Посмотреть сообщение
Может сразу форматировать раздел при удалении итема?
Можно и форматировать, если в ЛистВью локальные и иные носители отображать :)

0
197 / 189 / 15
Регистрация: 09.02.2011
Сообщений: 457
15.07.2011, 14:27
Цитата Сообщение от Etrimus Посмотреть сообщение
Как я понимаю - по мнению Microsoft, самое прямое, т.к. подобным образом и отображаются файлы/папки/диски в их ос Windows...
[/OFF]

Не по теме:

http://msdn.microsoft.com/ru-ru/library/system.windows.controls.listview.aspx
Вроде ни слова не нашел про файловую систему... Зачем так ущемлять контрол затачивая его только под файлы/папки

0
 Аватар для Etrimus
399 / 366 / 54
Регистрация: 23.05.2010
Сообщений: 716
15.07.2011, 15:42
Вот сделал простой пример удаления файла/папки. Контекстное меню есть, в нём один пункт. Осторожно, оно удаляет не в корзину, а сразу же

Не по теме:

Вроде ни слова не нашел про файловую систему...
Не очень понял, если в МСДН не написали, то значит и использовать не получится? Я не знаю, как ваше мнение, но по-моему, ЛистВью больше всех остальных компонентов подходит для этого. ДатаГридВью? ЛистБокс? Не уверен. Базовые функции отображения в ЛистВью выполняются прекрасно.
Зачем так ущемлять контрол затачивая его только под файлы/папки
В смысле - ущемлять? Мне что, надо, в нём показывать ещё и имена и адреса Васи, Пети, Феди и Вовы(как на картинке в примере МСДН), список контактов из ICQ, телефоны моих одногруппников в универе - и вообще все данные, какие я могу собрать с компа вперемежку с файлами и папками что бы не ущемлять? Но мне не нужны Вася, Федя и Вова, мне нужны файлы и папки :) На мой взгляд, сложные контролы-контейнеры вроде ЛистВью и ДатаГридВью для того и делались, что бы их можно было применить в широком круге задач и не писать под всё подряд свой контрол, а писать работающие программы...

Вложения
Тип файла: zip WindowsFormsApplication2.zip (36.5 Кб, 46 просмотров)
0
5 / 5 / 2
Регистрация: 17.01.2012
Сообщений: 70
07.02.2012, 21:19
Цитата Сообщение от Etrimus Посмотреть сообщение
Не знаю, как у тебя устроена программа, но можно при заполнении ЛистВью к каждому элементу привязывать путь к тому файлу или папке, которая в ЛистВью отображается. Записывать путь удобно в свойтсво tag. В этом свойстве лежит объект типа Object, т.е. засунуть туда можно что угодно, а следовательно можно даже и не путь, а сам объект файла/папки. Ну и при удалении пункта в ЛистВью ты можешь обратиться к свойтсву tag и удалять файл/папку.

Добавлено через 10 минут

Не по теме:


Как я понимаю - по мнению Microsoft, самое прямое, т.к. подобным образом и отображаются файлы/папки/диски в их ос Windows...

Можно и форматировать, если в ЛистВью локальные и иные носители отображать :)

А как удалить если даные в listView считываються с txt?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.02.2012, 21:19
Помогаю со студенческими работами здесь

Как из textBox перенести данные в таком же виде, в котором они там были, в listBox?
Подскажите как из textBox получит данные listBox в таком же виде в котором они там были. Пример: 123 234 234 4354 Получаем: 123...

Как сохранить числовые данные, чтобы они были доступны при следующем запуске приложения?
Когда обдумывал High score для игры, столкнулся с проблемой: переменные каждый раз обнуляются при перезапуске приложения? Можно их как-то...

Заполнить пробелами строки, чтобы они были одинаковой длины
Суть задания состоит в том что у нас есть массив строк, нужно определить максимальный элемент, а во все остальные добавить в начало пробелы...

Перестроить строки матрицы так, чтобы они были расположены по возрастанию в лексикографическом порядке
Дана матрица А из целых чисел размером MxN. Перестроить строки матрицы так, чтобы они были расположены по возрастанию в лексикографическом...

Ошибка: не удалось определить связь между двумя объектами, поскольку они привязаны к разным объектам ObjectContext
При вызове этого метода выдает ошибку не удалось определить связь между двумя объектами, поскольку они привязаны к разным объектам...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru