Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
3 / 3 / 2
Регистрация: 20.07.2014
Сообщений: 654

Использовать метод для выделенных названий файлов в ListBox

28.01.2019, 14:13. Показов 938. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!
Добавляю
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 private void button5_Click(object sender, EventArgs e) // Добавляем в диалоге файлы в ЛистБокс
 
        {
            List<FileInfo> files;
 
            using (var fbd = new FolderBrowserDialog())
            {
                if (fbd.ShowDialog() != DialogResult.OK)
                {
                    return;
                }
                files = Directory.GetFiles(fbd.SelectedPath).Select(f => new FileInfo(f)).ToList();
            }
 
            listBox1.DataSource = files;
            listBox1.DisplayMember = "Name";
            listBox1.ValueMember = "FullName";
 
        }

Потом хочу применить поиск, но он пишет только последний файл из выделенных, берет первый пишет, второй - пишет, третий и так далее и перезаписывает в файл последний, обнуляя предшествующие записи

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
private void button8_Click(object sender, EventArgs e) // Удаляем отображенные выделенные названия файлов из ЛистБокс (ДУБЛИРОВАНИЕ)
 
        {
            searchMask2(listBox1);
        }
 
        void searchMask2(ListBox listBox1) // Метод поиска по маске
 
        {
            {
                for (int i = listBox1.Items.Count - 1; i >= 0; i--)
                {
                    if (listBox1.GetSelected(i))
                    {
                        //string rootFolder = @"C:\Users\Anton\Desktop\С#folder\Питер";
                        string pattern = @"\b(Вася)\b";
                        using (StreamWriter sw = File.CreateText(@"C:\Users\Anton\Desktop\С#folder\target.txt"))
 
                            //foreach (var file in Directory.EnumerateFiles(rootFolder, "*.txt", SearchOption.AllDirectories))
 
                            //{
 
                                using (StreamReader sr = new StreamReader(listBox1.Items[i].ToString(), System.Text.Encoding.Default))
 
                                {
                                    string line;
                                    while ((line = sr.ReadLine()) != null)
 
                                    {
 
                                        string newstring = line.Substring(0, 8);
                                        Match match = Regex.Match(line, pattern, RegexOptions.IgnoreCase);
                                        var name = Path.GetFileName(listBox1.Items[i].ToString());
 
                                        if (match.Success)
 
                                        {
                                            var jk = (name + " " + newstring + " " + match.Value);
                                            sw.WriteLine(jk);
                                        }
 
                                        else
                                            sw.Write("");
                                    }
                                }
                            //}
 
                        MessageBox.Show("File txt is ready");
 
                    }
                }
            }
        }

Подскажите, пожалуйста, как это устранить?

Предполагаю, что нужно писать foreach вместо for в начале. Но как переписать, не знаю.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
28.01.2019, 14:13
Ответы с готовыми решениями:

ListBox, получить id выделенных элементов
Суть такова listBox1.SelectionMode = SelectionMode.MultiExtended; Как получить индексы выделенных элементов? желательно в...

Удаление выделенных файлов из Listbox
Всем привет! Есть Listbox, который заполняется файлами из папки ListBox1.Items.AddRange((From Path As String In...

Копирование файлов, выделенных в ListBox
Всем доброго здоровичка!!! Такая проблема: На форме 2 листбокса с мультивыделением. В них отображаются содержимое папок. Кнопки:...

9
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
28.01.2019, 16:23
в StreamReader поставить 2-м параметром true перед кодировкой , который обозначает, что файл будет дозаписываться.
C#
1
StreamReader sr = new StreamReader(listBox1.Items[i].ToString(), true, System.Text.Encoding.Default)
0
3 / 3 / 2
Регистрация: 20.07.2014
Сообщений: 654
28.01.2019, 16:40  [ТС]
Вроде, не в этом причина
Приложил скрин
Миниатюры
Использовать метод для выделенных названий файлов в ListBox  
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
29.01.2019, 14:34
ну, значит ,true должен быть 3м параметром, после кодировки.
у тебя же проблема была в том, что файл перезаписывается, и добавляется только последняя строка из листа.
так что причина как раз в этом.
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
29.01.2019, 16:03
AndreyVorobey, antoniogrid, Причина то в этом, но не в той строчке, потому что это StreamReader Он ничего не записывает никуда.
Нужно эту строчку:
C#
1
StreamWriter sw = File.CreateText(@"C:\Users\Anton\Desktop\С#folder\target.txt")
заменить на эту:
C#
1
StreamWriter sw = new StreamWriter(@"C:\Users\Anton\Desktop\С#folder\target.txt", true, Encoding.Default)
0
3 / 3 / 2
Регистрация: 20.07.2014
Сообщений: 654
29.01.2019, 16:18  [ТС]
Не хочет она запускать метод только по выделенным
Миниатюры
Использовать метод для выделенных названий файлов в ListBox  
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
29.01.2019, 16:23
Там же у вас написано, что по такому адресу файл не найден
0
3 / 3 / 2
Регистрация: 20.07.2014
Сообщений: 654
29.01.2019, 16:40  [ТС]
Файл у меня отбирается отсюда

private void button8_Click(object sender, EventArgs e) // adding

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        {
            if (listBox1.SelectedIndex != -1)
            {
                DirectoryInfo dinfo = new DirectoryInfo(@"C:\Users\lavraschuk\Desktop\Files\");
                string folderName = dinfo.FullName;
                string filepath = Path.Combine(folderName, listBox1.Items[listBox1.SelectedIndex].ToString());
                if (File.Exists(filepath))
                    searchMask2(listBox1); // using MaskMethod with current file
                    listBox1.Items.RemoveAt(listBox1.SelectedIndex);
            }
 
            MessageBox.Show("File txt is ready");
        }
А в ошибке почему-то указан путь за тридевять земель...
Не понимаю... Как это перепрописать...
0
 Аватар для Toros1992
899 / 554 / 275
Регистрация: 26.11.2015
Сообщений: 1,758
Записей в блоге: 2
29.01.2019, 16:45
Пройдитесь отладчиком, и посмотрите, что у Вас реально храниться в листбоксе
0
3 / 3 / 2
Регистрация: 20.07.2014
Сообщений: 654
29.01.2019, 17:37  [ТС]
Прошелся
У меня 68 файлов - ищет снизу вверх
Нашло, что выделено, пошло в алгоритм искать по маске
Доходит до строки - пишет, что физически файл не там, где ищет...

Мне кажется, тут вопрос в том, как переустановить место поиска по дефолту.
Листбокс содержит файлы, ищется именно по селектед.
Миниатюры
Использовать метод для выделенных названий файлов в ListBox  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
29.01.2019, 17:37
Помогаю со студенческими работами здесь

Проверка количества и считывание названий файлов в список ListBox
Появилась проблема. Не знаю как сделать так, чтобы программа считывала из определенной папки КОЛИЧЕСТВО файлов и распихивала каждый под...

Загрузка в ListBox названий файлов из папки и вывод в RichEdit
Всем привет. Нужно создать программу для работы с текстовыми файлами. На форме 1 ListBox 1 RichEdit и кнопка. По нажатию кнопки выбираем...

Как перенести список выделенных файлов из FileListBox в ListBox или в TextBox
1)как перенести список выделеных(!) файлов из FileListBox в просто listbox или в textbox? (нужен полный путь, т.е. c:qweasd.exe ...

Как передать в метод Main массив путей выделенных файлов
Всем привет. У меня такая проблема: программа принимает массив строк(каждая строка это путь к файлу): static void Main(string args) ...

Чтение названий всех папок из папки "Profiles" и вывод этих названий в ListBox
Мне надо устроить выбор профиля для загрузки игры. Все файлы одного профиля хранятся в папке с названием ника в папке Profiles. Например...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru