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

Удаление записи из ComboBox

25.09.2015, 06:06. Показов 3087. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго дня! Помогите пожалуйста решить данную проблему.
Есть форма, на ней TextBox1, TextBox2, label, ComboBox1, Button1 b Button2, задача в том что при нажатии на Button1(сохранить) данные из textBox1 сохраняются в первый файл, данные из textBox2 во второй файл, потом происходит чтение из файлов и добавление данных в словарь (данные из 1 файла ключ, из второго значение), потом из этого словаря заполняются comboBox и label, соответственно ключ и значение. Это все работает, нужно чтобы при нажатии на Button2 происходило удаление из словаря, comboBox и файлов значение выбранное в comboBox (соответственно ключ и значение как в словаре) пробовал решить таким образом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//Удаляем файлы
                File.Delete(Application.StartupPath + @"\ToFio.txt");
                File.Delete(Application.StartupPath + @"\ToDol.txt");                
                //выбираем из словаря ключ путем выбора из комбобокс
                string key1 = ((KeyValuePair<string, string>)ZapolnenieFio_comboBox.SelectedItem).Key;
                //удаляем строку в словаре
                fioTo.Remove(key1);
                //удаляем строку из комбобокса
//ошибка вываливается здесь!!!!!!!!!!!!!!!!!!!!!!!!!
                ZapolnenieFio_comboBox.Items.Remove(ZapolnenieFio_comboBox.SelectedItem);
                //создание файлов и заполнение их из словаря
                foreach (string Line in fioTo.Keys)
                {
                    string key = ((KeyValuePair<string, string>)ZapolnenieFio_comboBox.SelectedItem).Key;
                    string value = ((KeyValuePair<string, string>)ZapolnenieFio_comboBox.SelectedItem).Value;
                    File.AppendAllText(Application.StartupPath + @"\ToFio.txt", key);
                    File.AppendAllText(Application.StartupPath + @"\ToDol.txt", value);
                }
Но при нажатии на кнопку вываливается ошибка "Изменение коллекции элементов невозможно, если задано свойство DataSource.", смотрю свойство комбобокса DataSource там пусто.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.09.2015, 06:06
Ответы с готовыми решениями:

combobox - редактирование записи БД
Значение поля в записи БД (характеристика пожаров) - код района, есть связь этой таблицы с таблицей районов по этому полю. Как сделать так...

Удаление элемента из раскрытого ComboBox
Добрый день! Никак не могу разобраться, каким образом реализовать следующее действие: ComboBox открыт, правой кнопкой мыши щелкаем по...

Удаление повторяющийся элементов comboBox
Доброго времени суток! Подскажите пожалуйста, как сделать так, чтобы повторяющиеся элементы comboBox удалялись? В него загружаю имена...

8
11 / 11 / 12
Регистрация: 18.09.2015
Сообщений: 39
25.09.2015, 10:29
может дело в том, что в ZapolnenieFio_comboBox.SelectedItem лежит KeyValuePair<string, string>
а не просто key в ZapolnenieFio_comboBox и отдельная переменная KeyValuePair<string, string>
при выборе в комбике связываем key с KeyValuePair и кладём в лабел
0
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 47
25.09.2015, 11:11  [ТС]
Может, но дело в том что у меня comboBox заполняется значениями из словаря (парами ключ-значение) и в comboBox у меня отображается ключ, а в label значение данного ключа. Может подскажете другой вариант как добиться удаления строки из словаря (выделенной в comboBox) и соответственно данного значения из comboBox?
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
25.09.2015, 23:01
Цитата Сообщение от dobrogelatel Посмотреть сообщение
Может подскажете другой вариант как добиться удаления строки из словаря (выделенной в comboBox) и соответственно данного значения из comboBox?
Только если покажете, как заполняется комбобокс
0
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 47
26.09.2015, 04:08  [ТС]
Есть 2 файла ToDol.txt и ToFio.TXT в первом хранится должность, во втором ФИО. При чтении фалов значения добавляются в словарь по принципу ФИО - ключ, Должность - значение. Комбобокс заполняется значениями из данного словаря таким образом что в нем отображается ФИО, а соответствующее этому ФИО(ключу) должность (значение) отображается в Label. По кнопке удалить выделенная запись в комбобоксе должна в паре ключ-значение удалится из словаря и соответственно из комбобокса.
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.09.2015, 11:16
Цитата Сообщение от dobrogelatel Посмотреть сообщение
Комбобокс заполняется значениями из данного словаря
Поэлементно или через DataSource? Покажите код.
0
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 47
26.09.2015, 12:55  [ТС]
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
string dolLine;
                string fioLine;
                //открытие файлов для чтения
                StreamReader fileFio = new StreamReader(Application.StartupPath + @"\ToFio.txt");
                StreamReader fileDol = new StreamReader(Application.StartupPath + @"\ToDol.txt");
                //словарь очистился
                fioTo.Clear();
                //словарь заполнился из файлов
                while (((dolLine = fileDol.ReadLine()) != null) && ((fioLine = fileFio.ReadLine()) != null))
                    fioTo.Add(fioLine, dolLine);
                //Закрытие файлов
                fileFio.Close();
                fileDol.Close();
                //Заполнение комбобокс
                ZapolnenieFio_comboBox.DataSource = new BindingSource(fioTo, null);
                ZapolnenieFio_comboBox.DisplayMember = "Key";
                ZapolnenieFio_comboBox.ValueMember = "Value";
0
Эксперт .NET
 Аватар для Даценд
5878 / 4755 / 2939
Регистрация: 20.04.2015
Сообщений: 8,361
26.09.2015, 13:02
Лучший ответ Сообщение было отмечено dobrogelatel как решение

Решение

C#
1
2
3
4
5
ZapolnenieFio_comboBox.DataSource=null; //отключаем источник DataSource
fioTo.Remove(key1);  //удаляем строку из комбобокса
ZapolnenieFio_comboBox.DataSource = new BindingSource(fioTo, null); //подключаем источник заново
ZapolnenieFio_comboBox.DisplayMember = "Key";
ZapolnenieFio_comboBox.ValueMember = "Value";
1
0 / 0 / 0
Регистрация: 16.09.2015
Сообщений: 47
27.09.2015, 03:48  [ТС]
Да спасибо, это помогло, но тогда возникает другая проблема. Вот код описанный на событие изменения комбобокса:
C#
1
2
3
string key = ((KeyValuePair<string, string>)ZapolnenieFio_comboBox.SelectedItem).Key;
                string value = ((KeyValuePair<string, string>)ZapolnenieFio_comboBox.SelectedItem).Value;
                ZapolnenieDol_Label.Text = value;
и возникает ошибка: "Ссылка на объект не указывает на экземпляр объекта." ошибка на первую строку

Добавлено через 12 часов 57 минут
последнюю проблему решил, изменил код изменения комбо:
C#
1
2
3
4
5
6
7
8
9
10
if (ZapolnenieFio_comboBox.DataSource == null)
                {
                    ZapolnenieDol_Label.Text = "";
                }
                else
                {
                    string key = ((KeyValuePair<string, string>)ZapolnenieFio_comboBox.SelectedItem).Key;
                    string value = ((KeyValuePair<string, string>)ZapolnenieFio_comboBox.SelectedItem).Value;
                    ZapolnenieDol_Label.Text = value;
                }
Теперь ошибка такая, запись в комбо удаляется нормально, но если после этого сохранять новые записи, первое сохранение идет не новым значением в комбо, а дополняется уже выбранное. Например было 1 значение - "Значение1", 2 значение - "Значение2", мы значение 2 удалили, в комбо выделенно Значение 1, я добавляю новое значение - "Значение3", нажимаю "Сохранить" и в комбо выделенное "Значение1Значение3" и то же самое в метке. Буду думать, не откажусь от помощи...

Добавлено через 56 минут
решил проблему, foreach неправильно отрабатывал сделал так:
C#
1
2
3
4
5
6
7
foreach (KeyValuePair<string, string> Zap in fioTo)
                {                    
                    string key = Zap.Key + Environment.NewLine;
                    string value = Zap.Value + Environment.NewLine;                    
                    File.AppendAllText(Application.StartupPath + @"\ToFio.txt", key);
                    File.AppendAllText(Application.StartupPath + @"\ToDol.txt", value);                
                }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.09.2015, 03:48
Помогаю со студенческими работами здесь

Удаление выбранного значения из combobox
Добрый день, подключил combobox к базе данных (интерфейсом, а не кодом). Существуют 2 столбца: id и name. Как сделать так, чтоб при выборе...

Удаление, добавление и редактирование элементов ComboBox
вот такой вот вопрос, у меня есть форма на которой есть 3 комбобокса со значениями и у каждого комбобокса надо эти значения...

Удаление из файла строки, выбранной в ComboBox
Помогите осуществить задумку: Удаление из файла с помощью combobox, тоесть в combobox'e выбираем определенный item и удаляем его в файле.

Трудности при удаление файла с comboBox
Удаляю файл с comboBox . Запускаю появляется ошибка. Пишет - отказано в доступе private void button3_Click(object sender, EventArgs...

Можно ли сделать удаление из combobox по отмеченным checkbox?
В combox1 есть список слов(5 слов),возможно ли сделать так,чтобы при нажатии &quot;Удалить&quot; в combobox2,удалялись элементы c combobоx1...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru