У меня есть TextBox, Button и Combobox
Когда я нажимаю кнопку, я хочу, чтобы текст в текстовом поле добавлялся в элементы списка.
Вот мой код:
private void button1_Click(object sender, EventArgs e)
{
comboBox1.Items.Add(textBox1.Text);
}
Моя форма пока открыта. Этот текст отображается в поле со списком, но когда я закрываю форму и снова открываю ее, текст больше не отображается в поле со списком.
Я хочу сохранить текст в элементы коллекции Combobox. Я не хочу использовать базу данных.
Вы должны использовать какое-то хранилище, которое может быть базой данных (таблицей), файлом на диске или, возможно, даже чем-то, что хранит данные в облаке. Это требует усилий, и вам нужно решить, какие усилия вы готовы потратить. Сказав это, исключать базы данных заранее не кажется мне очень мудрой позицией.
Поскольку может показаться, что вы просто работаете с текстом, вы также можете исследовать простой текстовый файл или пользовательские настройки.
Вам действительно нужно немного больше учиться, потому что, похоже, вы предполагаете, что заполнение списка будет каким-то образом автоматически сохранено. У меня для вас новость: в C# этого не произойдет. Вам нужно гораздо больше, чтобы поместить его в базу данных. Попробуйте освежить в памяти базы данных, как подключиться и как создавать, читать, обновлять и удалять данные (CRUD).
Как уже упоминалось в комментариях, вам нужно понять и решить, где вы хотите хранить свои значения.
Для моего примера я создал простой текстовый файл для хранения этих значений. Код считывает из файла и добавляет каждую строку как элемент в поле со списком.
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();
}
Где вы хотите их хранить?