Как очистить форму в C #, сохранив введенные пользователем данные?

#c# #save

#c# #Сохранить

Вопрос:

Я пишу программу для настройки напитков. Программа позволяет пользователю выбирать размер, вкус, начинку и количество. Затем пользователь нажимает кнопку «Добавить напиток к заказу», и появляется сообщение «Вы хотите настроить другой напиток для добавления в свой заказ? Да, нет» Мой вопрос в том, как сохранить первый настроенный напиток для печати в квитанции вместе со вторым напитком? При очистке формы данные теряются правильно?

Ответ №1:

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

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

Ответ №2:

Сначала создайте объект, представляющий порядок

 public class DrinkOrder
{
  public Object Size { get; set; }
  public Object Flavor { get; set; }
  public Object Topping { get; set; }
  public Object Quantity { get; set; }
}
  

Примечание: я использую неопределенный Object тип, потому что я не знаю, как вы представляете эти значения полей

Затем добавьте в свою форму список, в котором сохраняются прошлые / будущие «заказы»

 List<DrinkOrder> Orders = new List<DrinkOrder>();
  

Затем, когда они нажмут кнопку добавить, заполните объект и добавьте его в список заказов.

 private void btnPlaceOrder_Click(object sender, EventArgs e)
{
  /* ... */

  this.Orders.Add(new DrinkOrder
  {
    Size = this.SizeControl.Value,
    Flavor = this.FlavorControl.Value,
    Toppings = this.ToppingControl.value
    Quantity = this.QuantityControl.Value
  });

  /* ... */
}
  

Затем вы можете очистить формы (при желании) и быть готовым делать это снова и снова.

После того, как они закончат размещать заказы, у вас теперь есть list ( Orders ), на который вы можете ссылаться как на «корзину покупок».

Комментарии:

1. Спасибо за ваш быстрый ответ! Кстати, где должен быть размещен список в форме?

2. @jmendegan: сохраните ее как закрытую переменную в классе формы, чуть ниже (предположительно) class Form1 { (если к ней не нужно обращаться с помощью других форм, тогда вам придется принять решение о правильной области видимости / инкапсуляции)

3. Хорошо, спасибо. Должны ли эти переменные в классе быть абстрактными? Пример: размер общедоступной абстрактной строки {get; set;} Это выдает много ошибок об абстрактном или внешнем

4. abstract — это объявление класса, что означает, что оно должно быть унаследовано. extern предназначен для DLL. Вы, вероятно, захотите private , protected или public

5. Я искал информацию об ошибках и об использовании классов в качестве держателей данных. Но чем больше я читаю, тем больше я запутываюсь. Можете ли вы объяснить концепцию использования класса, который вы описали выше?

Ответ №3:

Возможно, вы могли бы поместить данные куда-нибудь? Как массив?

Ответ №4:

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