20 / 20 / 1
Регистрация: 17.08.2012
Сообщений: 180
Записей в блоге: 1
1

listview - деление на название и путь

15.03.2013, 14:48. Показов 3513. Ответов 35
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Программа делает поиск файлов по маске. Я использовал листбокс с таким кодом; при двойном клике открывался документ и все работало
VB.NET
1
2
3
4
Dim Fold As New FolderBrowserDialog
        If Fold.ShowDialog = Windows.Forms.DialogResult.OK Then
            Me.ListBox1.Items.AddRange(System.IO.Directory.GetFiles(FoldD.SelectedPath, "*.docx", IO.SearchOption.AllDirectories))
        End If
но листбокс отображал только пути к файлам. Постала задача сделать это в listview с разбивкой на имя файла без расширения и пути к нему (как на рисунке), причем чтобы тоже при двойном клике открывался документ.
Двойной клик я сделаю, задача в том чтобы загрузить массив поиска в listview (так как на рисунке) и при клике выбирался именно путь к файлу, а не название
Спасибо
Миниатюры
listview - деление на название и путь  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.03.2013, 14:48
Ответы с готовыми решениями:

Деление на группы ListView android
Подскажите как поделить ListView на группы если используется SherlockFragment? Хочу разделить...

Название процесса с иконкой в ListView
В общем надо следующее: Вводя в Edit1 название какого либо активного процесса ( firefox.exe,...

Как изменить название колонки у ListView?
Как изменить название колонки в listview

Получить путь к выбранному файлу в ListView
Есть ListViev который отображает список файлов в данной папке. Есть richTextBox1 в который нужно...

35
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
17.03.2013, 22:04 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от viabcua Посмотреть сообщение
вроде какбы есть на нете 3,5 и выше, но у меня нет2
По этому поводу ничего не подскажу - у меня 4-ый фрейм.
0
20 / 20 / 1
Регистрация: 17.08.2012
Сообщений: 180
Записей в блоге: 1
18.03.2013, 00:59  [ТС] 22
Nachrichter, А как в мой же листвью загрузить выбранные файлы?
пробовал так - не получилось (мультиселект=тру, фильтры поставил)
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
OpenFileDialog2.ShowDialog()
            If OpenFileDialog2.ShowDialog() = Windows.Forms.DialogResult.OK Then
                For Each x As String In OpenFileDialog2.FileNames
                    Try
                        Dim ItemDetails As ListViewItem
                        ItemDetails = ListView1.Items.Add(IO.Path.GetFileName(x))
                        With ItemDetails
                            .SubItems.Add(x)
                        End With
                    Catch Exc As Exception
                        MsgBox(Exc.ToString)
                    End Try
                Next
 
            End If
0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
18.03.2013, 05:42 23
viabcua, SubItems созданы?
0
20 / 20 / 1
Регистрация: 17.08.2012
Сообщений: 180
Записей в блоге: 1
18.03.2013, 11:04  [ТС] 24
Цитата Сообщение от Nachrichter Посмотреть сообщение
SubItems созданы?
да, созданы
0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
19.03.2013, 10:22 25
Вот так:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim OFD As New OpenFileDialog()
        OFD.Multiselect = True
        If OFD.ShowDialog() = DialogResult.OK Then
            For Each x As String In OFD.FileNames
                Try
                    Dim ItemDetails As ListViewItem
                    ItemDetails = ListView1.Items.Add(IO.Path.GetFileName(x))
                    With ItemDetails
                        .SubItems.Add(x)
                    End With
                Catch Exc As Exception
                    MsgBox(Exc.ToString)
                End Try
            Next
        End If
всё работает.

Добавлено через 23 часа 2 минуты
Цитата Сообщение от viabcua Посмотреть сообщение
мне нужно в списке менять позицию на 1 вверх/вниз
viabcua, а что, если менять не Index, а Text элементов местами? Я тут накидал:
VB.NET
1
2
3
4
5
Dim FocItm, UpItm As String
FocItm = ListView1.FocusedItem.Text
UpItm = ListView1.Items.Item(ListView1.FocusedItem.Index - 1).Text
ListView1.FocusedItem.Text = UpItm
ListView1.Items.Item(ListView1.FocusedItem.Index - 1).Text = FocItm
но это справедливо только для одного столбца. Нужно с SubItem покопаться.
1
20 / 20 / 1
Регистрация: 17.08.2012
Сообщений: 180
Записей в блоге: 1
19.03.2013, 10:36  [ТС] 26
Цитата Сообщение от Nachrichter Посмотреть сообщение
а что, если менять не Index, а Text элементов местами? Я тут накидал:
VB.NET
1
2
3
4
5
Dim FocItm, UpItm As String
FocItm = ListView1.FocusedItem.Text
UpItm = ListView1.Items.Item(ListView1.FocusedItem.Index - 1).Text
ListView1.FocusedItem.Text = UpItm
ListView1.Items.Item(ListView1.FocusedItem.Index - 1).Text = FocItm
но это справедливо только для одного столбца. Нужно с SubItem покопаться.
Я сделал так
VB.NET
1
2
3
Dim index As Integer = listView1.SelectedItems(0).Index
listView1.Items(index + 1).Selected = True
listView1.Items(index).Selected = False
Добавлено через 1 минуту
Nachrichter,Вы посмотрели о перемешивании и о выборе случайного?
0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
19.03.2013, 10:37 27
viabcua, так имелось ввиду просто перемещение фокуса по элементам? Я-то их пытаюсь местами поменять. Собственно уже этого добился, ну, хоть сам знать буду.
0
20 / 20 / 1
Регистрация: 17.08.2012
Сообщений: 180
Записей в блоге: 1
19.03.2013, 10:39  [ТС] 28
Цитата Сообщение от Nachrichter Посмотреть сообщение
так имелось ввиду просто перемещение фокуса по элементам?
это случайный выбор

Цитата Сообщение от Nachrichter Посмотреть сообщение
Я-то их пытаюсь местами поменять
а это перемешать итемы с субитемом
0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
19.03.2013, 10:45 29
Цитата Сообщение от viabcua Посмотреть сообщение
а это перемешать итемы с субитемом
Почему? Строки корректно меняются местами без всяких Itemосмешений.
0
20 / 20 / 1
Регистрация: 17.08.2012
Сообщений: 180
Записей в блоге: 1
19.03.2013, 10:48  [ТС] 30
Цитата Сообщение от Nachrichter Посмотреть сообщение
Строки корректно меняются местами без всяких Itemосмешений.
это через какой код?

Не по теме:

чет я туплю с утра

0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
19.03.2013, 10:54 31
Вот так выделенная строка перемещается вверх:
VB.NET
1
2
3
4
5
6
Dim Ind As Integer = ListView1.SelectedItems(0).Index
  If Ind <> 0 Then
  Dim TmpItm As ListViewItem = ListView1.Items(Ind - 1)
  ListView1.Items.Remove(TmpItm)
  ListView1.Items.Insert(Ind + (ListView1.SelectedItems.Count - 1), TmpItm)
End If
при этом строка над выделенной будет перемещена вниз.
А вот так наоборот:
VB.NET
1
2
3
4
5
6
Dim Ind As Integer = ListView1.SelectedItems(ListView1.SelectedItems.Count - 1).Index
  If Ind <> ListView1.Items.Count - 1 Then
     Dim TmpItm As ListViewItem = ListView1.Items(Ind + 1)
     ListView1.Items.Remove(TmpItm)
     ListView1.Items.Insert(Ind - (ListView1.SelectedItems.Count - 1), TmpItm)
  End If
Добавлено через 47 секунд
Цитата Сообщение от viabcua Посмотреть сообщение
Nachrichter,Вы посмотрели о перемешивании и о выборе случайного?
Руки ещё, к сожалению, не дошли...

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

Не по теме:

Цитата Сообщение от viabcua Посмотреть сообщение
Не по теме:
чет я туплю с утра
У нас уже обед, но после вчерашнего - голова тоже деревянная. :D

1
20 / 20 / 1
Регистрация: 17.08.2012
Сообщений: 180
Записей в блоге: 1
19.03.2013, 10:54  [ТС] 32
Цитата Сообщение от Nachrichter Посмотреть сообщение
Руки ещё, к сожалению, не дошли...
Спасибо и на том. Коль шо напишете, свисните

Не по теме:


Цитата Сообщение от Nachrichter Посмотреть сообщение
У нас уже обед, но после вчерашнего - голова тоже деревянная.
у меня 9 утра и аналогично... :D

0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
19.03.2013, 11:38 33
viabcua, выбор случайного Item'а:
VB.NET
1
2
3
4
5
Dim Rnd As New Random
Dim FocItm As Integer
Dim ItmCount As Integer = ListView1.Items.Count
FocItm = Rnd.Next(ItmCount)
ListView1.FocusedItem = ListView1.Items.Item(FocItm)
ну и для его выделения:
VB.NET
1
2
ListView1.FocusedItem.Selected = True
ListView1.Focus()
1
20 / 20 / 1
Регистрация: 17.08.2012
Сообщений: 180
Записей в блоге: 1
19.03.2013, 23:04  [ТС] 34
Цитата Сообщение от Nachrichter Посмотреть сообщение
выбор случайного Item'а
получается такое дело, что если в листвьюве много итемов, то при случайном выделении теряется выделенный елемент где-то внизу или вверху списка и приходится вручную его искать что не очень удобно. Можно ли как то прокрутку к этому елементу организовать?
0
649 / 601 / 92
Регистрация: 19.03.2012
Сообщений: 1,128
19.03.2013, 23:16 35
Цитата Сообщение от viabcua Посмотреть сообщение
Можно ли как то прокрутку к этому елементу организовать?
Конечно, можно. Вот так:
VB.NET
1
ListView1.TopItem = ListView1.Items.Item(FocItm)
1
12 / 12 / 2
Регистрация: 24.02.2013
Сообщений: 41
20.03.2013, 00:33 36
Перемешивание Item`ов:

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim i, Ind As Integer
        Dim TmpItm As ListViewItem
        Randomize()
        For i = 0 To ListView1.Items.Count - 1
            Ind = CInt(Rnd() * (ListView1.Items.Count - 1) + 1)
            Me.Text = Ind.ToString
            TmpItm = ListView1.Items(i)
            ListView1.Items.Remove(TmpItm)
            ListView1.Items.Insert(Ind - 1, TmpItm)
 
        Next
 End Sub
0
20.03.2013, 00:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
20.03.2013, 00:33
Помогаю со студенческими работами здесь

Вывести название файла, указав путь
Напишите, пожалуйста, такую программу, которая выводит на экран название файла, путь к которому...

Получить реальное название и путь к прилинкованной таблице
где можно увидеть реальное название и путь линкованной таблицы?

Запустить mp3 файл, инфо и путь которого находится в ListView
Здравствуйте, у меня есть listview, в нем 4 колонки (имя, альбом, артист, путь) которые содержат...

Как сделать, чтобы в ListView при нажатии на позиции выводилось его название?
Добрый ночи такая небольшая проблема возникла как сделать чтобы в listview при нажатии на позиции...


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

Или воспользуйтесь поиском по форуму:
36
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru