Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 37

Сохранить элементы из listBox в List<>

03.03.2019, 17:52. Показов 2202. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть код
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
 listBox2.Items.Clear();
            var name = textBox11.Text;
            var avtor = textBox12.Text;
            var janr = textBox13.Text;
            var booksNames = books.Where(x => x.Name.Contains(name) && x.Avtor.Contains(avtor) && x.Janr.Contains(janr)).Select(x => x.Name);
            
            foreach (var a in booksNames)
            { 
                listBox2.Items.Add(a);
                books2.Add(listBox2.Items.ToString());
            }

Который после нахождения нужных файлов, записывает названия книг в listBox.
Я хочу сделать так, чтобы помимо имен, он записывал и другие параметры книги в List<> такие как , автор, жанр и т.д, но при этом в listbox показывал только их названия.
В классе они описаны так.
Кликните здесь для просмотра всего текста

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
       public Kniga2(string s1, string s2, string s3, string s4, string s5, string s6, string s7, string s8, string s9, string s10, string s11)
        {
            name = s1;
            avtor = s2;
            janr = s3;
            year = s4;
            isbn = s5;
            izdat = s6;
            format = s7;
            istocnik = s8;
            year_in_bibl = s9;
            year_read = s10;
            mark = s11;

s-это textbox
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.03.2019, 17:52
Ответы с готовыми решениями:

Не отображаются элементы ListBox из List<T>
namespace trymatrixes { public partial class RSSList : Form { public RSSList(List&lt;string&gt; myRssList) { ...

Сохранить элементы List<> в файл
using (StreamWriter sw = new StreamWriter(&quot;Noutbooks.txt&quot;)) { for (int i = 0; i &lt; nout.noutList.Count; i++)...

Элементы listbox сохранить в текстовый файл
Доброго времени суток, подскажите как реализовать сохранение из лист бокс в txt в С++ Билдере было так ...

8
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
03.03.2019, 17:57
Otvertka72, Данных маловато. Но по моему у вас всё наоборот. Нужно List с данными привязывать к ListBox и через DisplayMember выбирать, что в нем отображать.
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 37
03.03.2019, 18:01  [ТС]
DisplayMember, как это все делать?
А какие еще данные нужны?
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
03.03.2019, 18:04
Otvertka72, Код покажите или проект скиньте. А то у вас обрывок кода и конструктор.
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 37
03.03.2019, 18:12  [ТС]
Вот проект, тогда может скажете как это лучше реализовать, я просто понимаю, что я не совсем правильный путь выбрал.
У меня после того как отсортированные названия книг сохранились в listBox2, я нажимаю на них, чтобы данные в графе textbox'ов обновились, то у меня получается, что он берет данные из List по индексу, и получается если отсортировать две последние книги из listBox1 в listBox2, то при нажатии на название книги, на первой строчке в listBox2 он будет брать данные из listBox1 и покажет данные с той книги которая в listBox1 находится на первом месте(т.е не те данные)
Вложения
Тип файла: rar Архив WinRAR.rar (227.2 Кб, 3 просмотров)
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
03.03.2019, 19:17
Otvertka72, Замените
C#
1
2
3
4
foreach (Kniga book in books)
{
  listBox1.Items.Add(book.Name);
}
на
C#
1
2
listBox1.DataSource = books;
listBox1.DisplayMember = "Name";
так же замените в listBox1_SelectedIndexChanged
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
if (listBox1.SelectedIndex >= 0)
            {
                textBox1.Text = books[listBox1.SelectedIndex].Avtor;
                textBox2.Text = books[listBox1.SelectedIndex].Janr;
                textBox3.Text = books[listBox1.SelectedIndex].Year;
                textBox4.Text = books[listBox1.SelectedIndex].Isbn;
                textBox5.Text = books[listBox1.SelectedIndex].Izdat;
                textBox6.Text = books[listBox1.SelectedIndex].Format;
                textBox7.Text = books[listBox1.SelectedIndex].Istocnik;
                textBox8.Text = books[listBox1.SelectedIndex].Yearbibl;
                textBox9.Text = books[listBox1.SelectedIndex].Yearread;
                textBox10.Text = books[listBox1.SelectedIndex].Mark;
 
            }
            listBox1.SelectedIndex = -1;
на
C#
1
2
3
4
5
6
7
8
9
10
11
            var item = (Kniga)listBox1.SelectedItem;
            textBox1.Text = item.Avtor;
            textBox2.Text = item.Janr;
            textBox3.Text = item.Year;
            textBox4.Text = item.Isbn;
            textBox5.Text = item.Izdat;
            textBox6.Text = item.Format;
            textBox7.Text = item.Istocnik;
            textBox8.Text = item.Yearbibl;
            textBox9.Text = item.Yearread;
            textBox10.Text = item.Mark;
Сейчас дальше посмотрю. Надеюсь принцип этих замен понятен.

Добавлено через 41 минуту
Otvertka72, В button1_click заменить linq выражение на:
C#
1
var booksNames = books.Where(x => x.Name.Contains(name) && x.Avtor.Contains(avtor) && x.Janr.Contains(janr)).Select(x => x).ToList();
Убрать строки
C#
1
2
3
4
5
6
7
listBox2.Items.Clear();
//и
foreach (var a in booksNames)
{ 
   listBox2.Items.Add(a);
   books2.Add(listBox2.Items.ToString());
}
добавить
C#
1
2
listBox2.DataSource = booksNames;
listBox2.DisplayMember = "Name";
в listBox2_SelectedIndexChanged заменить
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if (listBox2.SelectedIndex >= 0)
            {
                textBox1.Text = books[listBox2.SelectedIndex].Avtor;
                textBox2.Text = books[listBox2.SelectedIndex].Janr;
                textBox3.Text = books[listBox2.SelectedIndex].Year;
                textBox4.Text = books[listBox2.SelectedIndex].Isbn;
                textBox5.Text = books[listBox2.SelectedIndex].Izdat;
                textBox6.Text = books[listBox2.SelectedIndex].Format;
                textBox7.Text = books[listBox2.SelectedIndex].Istocnik;
                textBox8.Text = books[listBox2.SelectedIndex].Yearbibl;
                textBox9.Text = books[listBox2.SelectedIndex].Yearread;
                textBox10.Text = books[listBox2.SelectedIndex].Mark;
            }
            listBox2.SelectedIndex = -1;
на
C#
1
2
3
4
5
6
7
8
9
10
11
                var item = (Kniga)listBox2.SelectedItem;
                textBox1.Text = item.Avtor;
                textBox2.Text = item.Janr;
                textBox3.Text = item.Year;
                textBox4.Text = item.Isbn;
                textBox5.Text = item.Izdat;
                textBox6.Text = item.Format;
                textBox7.Text = item.Istocnik;
                textBox8.Text = item.Yearbibl;
                textBox9.Text = item.Yearread;
                textBox10.Text = item.Mark;
Цитата Сообщение от Otvertka72 Посмотреть сообщение
будет брать данные из listBox1 и покажет данные с той книги которая в listBox1 находится на первом месте(т.е не те данные)
Это происходит из-за методов TextChanged у текстбоксов. Они обновляют данные в List когда щелкаешь по листбоксам.
0
0 / 0 / 0
Регистрация: 07.10.2018
Сообщений: 37
03.03.2019, 19:47  [ТС]
Спасибо большое очень помогли, а можете посоветовать где прочитать про DisplayMember?
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
03.03.2019, 20:12
Otvertka72, https://metanit.com/sharp/windowsforms/4.8.php
0
 Аватар для PoPsa85
814 / 561 / 240
Регистрация: 01.07.2018
Сообщений: 1,818
04.03.2019, 15:19
Otvertka72, Смотрите, вот ваш проект с правками.
Вложения
Тип файла: zip Kniga.zip (347.0 Кб, 6 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.03.2019, 15:19
Помогаю со студенческими работами здесь

Как сохранить выделенные элементы из ListBox?
Доброго времени суток! Не могу понять как сохранить выделенные элементы с ListBox, именно выделенные. Могу сохранить либо один элемент,...

Как правильно сохранить элементы Listbox
Есть элементы в ListBox которые я сохраняю с помощью данного когда Запись using (System.IO.StreamWriter sw = new...

Отображение в listBox поля элемента из коллекции коллекций List<List<>>
Есть карта в pictureBox-е. На ней мышкой ставяться флажки(маркеры). Нужно хранить их в БД с возможностью добавлять/удалять/изменять...

Записать в файл по очереди элементы List<string> и List<char>
У меня есть List с string элементами и есть List с char элементами. Как сделать чтобы у файл записывались последователь сначало string...

Сортировка двумерного List<List<string>>, по 1-ой строке, чтобы элементы 2-ой строки передвинулись в соответствии с 1-ой
Дан двумерный массив List&lt;List&lt;string&gt;&gt; , состоящий из двух строк, как его отсортировать по первой строке, чтобы элементы второй строки...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru