Не сохранять элемент в ComboBox

У меня есть TextBox, Button и Combobox
Когда я нажимаю кнопку, я хочу, чтобы текст в текстовом поле добавлялся в элементы списка.

Вот мой код:

        private void button1_Click(object sender, EventArgs e)
    {
        comboBox1.Items.Add(textBox1.Text);
    }

Моя форма пока открыта. Этот текст отображается в поле со списком, но когда я закрываю форму и снова открываю ее, текст больше не отображается в поле со списком.

Я хочу сохранить текст в элементы коллекции Combobox. Я не хочу использовать базу данных.

Где вы хотите их хранить?

Alejandro 12.12.2020 23:52

Вы должны использовать какое-то хранилище, которое может быть базой данных (таблицей), файлом на диске или, возможно, даже чем-то, что хранит данные в облаке. Это требует усилий, и вам нужно решить, какие усилия вы готовы потратить. Сказав это, исключать базы данных заранее не кажется мне очень мудрой позицией.

Peter B 12.12.2020 23:55

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

Ňɏssa Pøngjǣrdenlarp 12.12.2020 23:57

Вам действительно нужно немного больше учиться, потому что, похоже, вы предполагаете, что заполнение списка будет каким-то образом автоматически сохранено. У меня для вас новость: в C# этого не произойдет. Вам нужно гораздо больше, чтобы поместить его в базу данных. Попробуйте освежить в памяти базы данных, как подключиться и как создавать, читать, обновлять и удалять данные (CRUD).

Paul Sinnema 13.12.2020 00:02
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
4
91
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Как уже упоминалось в комментариях, вам нужно понять и решить, где вы хотите хранить свои значения.

Для моего примера я создал простой текстовый файл для хранения этих значений. Код считывает из файла и добавляет каждую строку как элемент в поле со списком.

        private void Form1_Load(object sender, EventArgs e)
        {
            // Read items from file into a string array
            string[] items = System.IO.File.ReadAllLines(@"D:\ComboBoxValues.txt");

            // Add items to the comobobox when opening the form
            comboBox1.Items.AddRange(items);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Add your new value to the combobox
            comboBox1.Items.Add(textBox1.Text);

            // Put all existing comobo box items into a string array
            string[] items = comboBox1.Items.OfType<string>().ToArray();

            // Save the array of items to a text file (this will not append, it will re-write the file)
            System.IO.File.WriteAllLines(@"D:\ComboBoxValues.txt", items);
        }

Это может быть не самый элегантный способ сделать это, но с точки зрения понимания - этого должно быть более чем достаточно.

если вам не нравится использовать файловую систему, вы можете использовать настройки (но не рекомендуется использовать настройки для запоминания больших значений), перейдите по этой ссылке, чтобы увидеть, как создать новую настройку

     private void Form1_Load(object sender, EventArgs e)
     {
         string[] strItems = Properties.Settings.Default.items.Split(", ");
         for(int i = 0; i < strItems.length; i++) {
            comboBox1.Items.Add(strItems[i]);
         }
     }

     private void button1_Click(object sender, EventArgs e)
     {
          //add your new value to the combobox
          comboBox1.Items.Add(textBox1.Text);

          //put all existing combo box items into a string array
          string[] items = comboBox1.Items.OfType<string>().ToArray();
 
          for(int i = 0; i < items.length; i++) {
              //I assumed you had an items key in your settings
              if (i == items.length - 1) {
                  Properties.Settings.Default.items += value;
              } else {
                  Properties.Settings.Default.items += value + ", ";
              }
           }
           //then you should to save your settings
           Properties.Settings.Default.Save();
     }

Другие вопросы по теме