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

Вывод данных из checkedListBox в label по отдельности

07.11.2022, 23:51. Показов 1352. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть checkedListBox состоящий из 10 цифр. Выбранные элементы при нажатии кнопки удаляются. Нужно чтобы при выборе в checkedListBox элементов (до удаления) они записывались в label через запятую. Например если выбирается один элемент, он записывается в label1 и там остается. При выборе следующего элемент или группы элементов они записываются в label2 и т.д.

При выборе одновременно всех элементов, они записываются в label1 (1,2,3,4...10), а все остальные label остаются пустыми.

Есть код который выводит новый результат, удаляя старый. Не понимаю как его можно подправить чтобы работало

C#
1
2
3
4
5
label1.Text = " ";
            foreach (var checkedBox in checkedListBox1.CheckedItems)
            {
                label1.Text += checkedBox.ToString() + ",";
            }
Миниатюры
Вывод данных из checkedListBox в label по отдельности  
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.11.2022, 23:51
Ответы с готовыми решениями:

Вывод в Label выбранных значений из CheckedListBox
Доброго времени суток! Помогите пожалуйста разобраться что делаю не так :-| На форме есть checkedListBox и label. По нажатию кнопки...

Вывод данных из listbox в textbox по отдельности
Нужно сделать чтобы выбранные данные в listbox выводились в разных textbox

Динамическое создание Label, и работа с каждым из них по отдельности
Здравствуйте, необходимо создавать при загрузке программы новые Label, делаю так: Program.bn1 = new Label(); ...

19
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,754
Записей в блоге: 1
08.11.2022, 08:22
Цитата Сообщение от Vasiliy145 Посмотреть сообщение
Не понимаю как его можно подправить чтобы работало
Изменить сам подход. Выкинуть все метки кроме первой, а элементы записывать так
C#
1
2
3
4
5
label1.Text = " ";
foreach (var checkedBox in checkedListBox1.CheckedItems)
{
   label1.Text += checkedBox.ToString() + ",\n\r";
}
0
0 / 0 / 0
Регистрация: 05.11.2022
Сообщений: 25
08.11.2022, 22:54  [ТС]
В коде нужно убрать: label1.Text = " "; Иначе вывод данных постоянно перезаписывается на новые.

Но и с этим работает не совсем так как нужно. При таком коде каждый выбранный элемент записывается в label с новой строки. А нужно чтобы, например, выбрал несколько элементов одновременно (1,2,3,4,5), нажал кнопку, и они записывались также: 1,2,3,4,5.

Если выбираешь по одному элементу (1), он и записывался как: 1. Выбрал все 10, запись: 1,2,3,4,5,6,7,8,9,10.

По сути должно получится к примеру так:
1,2,3
4,5
6,7,8
9,10
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,754
Записей в блоге: 1
09.11.2022, 09:53
Что-то я совсем запутался, то пишите
Цитата Сообщение от Vasiliy145 Посмотреть сообщение
Выбрал все 10, запись: 1,2,3,4,5,6,7,8,9,10.
а то пишите так
Цитата Сообщение от Vasiliy145 Посмотреть сообщение
По сути должно получится к примеру так:
1,2,3
4,5
6,7,8
9,10
Так как в итоге? Все числа через запятую и в одну строку или построчно и с разбивкой по какому-то алгоритму. Если второе, то каким образом определяется содержимое каждой строки?
Могу предложить вариант "с наполнением", т.е. первые три числа в первую метку, если есть ещё числа, то их во вторую и т.д.
1
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
09.11.2022, 10:21
Vasiliy145,
объявите переменную над методом кнопки
C#
1
int count = 1;
в методе кнопки замените код на
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
List<string> items = new List<string>();
foreach(var el in checkedListBox1.CheckedItems)
{
    items.Add(el.ToString());
}
foreach(Control label in this.Controls)
{
    if(label is Label)
    {
        if(label.Name[label.Name.Length - 1].ToString() == count.ToString())
        {
            label.Text = String.Join(",", items);
        }                    
    }
}            
count++;
0
0 / 0 / 0
Регистрация: 05.11.2022
Сообщений: 25
09.11.2022, 23:07  [ТС]
Так как в итоге?
Все выбранные числа должны идти построчно. Если человек отмечает галочкой 1-2-3-4-5-6-7 (например), то в одну строку записываются числа: 1,2,3,4,5,6,7.

Затем (второй раз) если выбрал 8-9, записываются 8,9, но с новой строки. То есть любое выделение элементов (одного или нескольких) должны записываться с новой строки при этом предыдущая строка (запись) не должна удаляться.

Добавлено через 19 минут
Интересная работа указанного вами кода. Вывод (запись) выбранных элементов идет в произвольные label, по очереди. В первом посте указано label1, label2....label10. Но в форме есть еще другие текстовые поля (название checkedList и т.п.) И запись идет именно вместо них, по порядку.



А можно как нибудь указать в какие конкретно label нужно/можно запись делать. Например в те же label1, label2....label10?
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
09.11.2022, 23:51
Vasiliy145, так что не так с тем кодом, который я Вам выслал?
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,754
Записей в блоге: 1
10.11.2022, 08:15
AndreyVorobey, всё так, я бы ещё break добавил после 12 строки.
0
0 / 0 / 0
Регистрация: 05.11.2022
Сообщений: 25
10.11.2022, 11:11  [ТС]
Vasiliy145, так что не так с тем кодом, который я Вам выслал?
Вывод (запись) выбранных элементов идет в произвольные label, по очереди. В форме есть еще другие текстовые поля (название checkedList и т.п.) И запись идет именно вместо них, по порядку. А нужно чтобы запись была в label1, label2 ....label10. А записывает вместо "название 1, название 2 ...."
Миниатюры
Вывод данных из checkedListBox в label по отдельности  
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
10.11.2022, 11:17
Vasiliy145,
Вложения
Тип файла: 7z WindowsFormsApp201.7z (173.3 Кб, 4 просмотров)
0
2287 / 1603 / 400
Регистрация: 26.06.2017
Сообщений: 4,754
Записей в блоге: 1
10.11.2022, 11:21
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
List<string> items = new List<string>();
foreach(var el in checkedListBox1.CheckedItems)
{
    items.Add(el.ToString());
}
foreach(Label label in this.Controls.OfType<Label>())
{
    if(label.Text.Substring(5) == count.ToString())
    {
        label.Text = String.Join(",", items);
        break;
    }                    
}            
count++;
Добавлено через 1 минуту
И маленькое замечание: если метки будут лежать в другом контейнере, то перебирать нужно его Controls.
0
0 / 0 / 0
Регистрация: 05.11.2022
Сообщений: 25
10.11.2022, 12:17  [ТС]
Выдает ошибку: startIndex не может быть больше, чем длина строки

Добавлено через 1 минуту
Вложения
Тип файла: 7z WindowsFormsApp201.7z
У меня не загружается данный файл
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
10.11.2022, 12:43
Vasiliy145,так сделайте так, чтоб загрузился. это архив обычный
0
0 / 0 / 0
Регистрация: 05.11.2022
Сообщений: 25
10.11.2022, 12:51  [ТС]
вот что я получаю при открытии
Миниатюры
Вывод данных из checkedListBox в label по отдельности  
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
10.11.2022, 12:53
Vasiliy145, ну а если два раза нажать на Form1 ?
0
0 / 0 / 0
Регистрация: 05.11.2022
Сообщений: 25
11.11.2022, 13:26  [ТС]
В общем собрал код. В checkedListBox1 10 элементов. Задача выбрать элементы в checkedListBox1, перенести их в checkedListBox2, удалить выбранные из checkedListBox1, записать их в label (groupBox1). Проблема в записи label. Записывается только 9 операций (9 нажатий кнопок). 10-я операция не записывается. Причем если в groupBox1 добавить label11 первая запись будет в нем. Как сделать чтобы все 10 операций (если потребовалось) прописывались каждый в свой label

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
int count = 1;
        private void button1_Click(object sender, EventArgs e)
        {
            foreach (var item in checkedListBox1.CheckedItems)             // перенос выбранных элементов из checkedListBox1 с сохранением в checkedListBox1 
            {
                checkedListBox2.Items.Add(item);
            }
 
 
            List<string> items = new List<string>();
            foreach (var el in checkedListBox1.CheckedItems)
            {
                items.Add(el.ToString());
            }
            if (items.Count == 0)
            {
                MessageBox.Show("Ничего не выбрано");
                return;
            }
            foreach (Control label in this.groupBox1.Controls)
            {
                if (label is Label)
                {
                    if (label.Name[label.Name.Length - 1].ToString() == count.ToString())
                    {
                        label.Text = String.Join(",", items);
                        count++;
                        break;
                    }
                }
            }
            
 
            for (int i = 0; i < checkedListBox1.CheckedItems.Count; i++)  // удаление выбранных элементов из checkedListBox1
            {
                checkedListBox1.Items.Remove(checkedListBox1.CheckedItems[i--]);
            }
 
 
        }
Миниатюры
Вывод данных из checkedListBox в label по отдельности  
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
11.11.2022, 13:34
Vasiliy145, нужно внести правку. вместо
C#
1
label.Name[label.Name.Length - 1].ToString()
написать
C#
1
label.Text.Substring(5)
так как в первом случае будет выбираться только последний символ наименования label, и в случае с label10 выберется 0, что не правильно.
а второй случай обрежет строку и из label10 получиться 10
0
0 / 0 / 0
Регистрация: 05.11.2022
Сообщений: 25
11.11.2022, 14:08  [ТС]
Если так, то цикл делает 7 записей, а на 8-й ошибка: startIndex не может быть больше, чем длина строки.
0
2810 / 1679 / 885
Регистрация: 14.04.2015
Сообщений: 5,723
11.11.2022, 14:15
Лучший ответ Сообщение было отмечено Vasiliy145 как решение

Решение

Vasiliy145,
C#
1
label.Name.Substring(5).ToString()
1
0 / 0 / 0
Регистрация: 05.11.2022
Сообщений: 25
11.11.2022, 20:52  [ТС]
А как можно сделать чтобы программа возвращалась как бы в начало, чтобы она выглядела, как при открытии приложения. Например на определенном этапе, при нажатии другой кнопки все label и checkedLis возвращались в исходное состояние. То есть своего рода кнопка "сброс".

Добавлено через 57 минут
Пробовал под кнопку

C#
1
 Application.Restart();
но как то коряво получается. Окно с формой по новому перезапускается, не очень приятно для глаз
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.11.2022, 20:52
Помогаю со студенческими работами здесь

Вывод данных в label
Всем ещё раз привет! Необходимо реализовать вывод доступного количества в label на основании выбора в combobox. Данные в combobox...

Вывод данных из БД в label
Скажите Пожалуйста не ужели так сложно вывести данные из таблицы в БД в label, что в интернете ничего про это нет, только в таблицу...

Вывод данных в label
из С# в Access (тест и результат ( оценка ) сохранить в MS Access . string query = &quot;INSERT INTO Данные (Оценки) VALUES (?)&quot;; ...

Вывод данных из БД в label
Здравствуйте! Вопрос такой: как из базы access вывести данные в label/на кнопку в c#? ---- Есть База с таблицей Билеты надо вывести...

Вывод данных в label
Написал программу которая возводит каждую последующую строку в степень первой, но не могу понять как сделать так чтобы он в label выводил...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru