#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:
Для этого вы можете использовать привязку данных, это просто и позволяет сохранять несколько данных. Подробнее об этом можно прочитать здесь