Я импортировал данные из файла Microsoft Access.Я показал 2 столбца для товара и цены.Если я выберу элемент и нажму на сумму, он будет отображать итоговую сумму, налог и промежуточную сумму заказа в отдельных текстовых полях.Когда я нажимаю кнопку очистки, чтобы очистить текстовые поля и порядок, он работает нормально.Когда я запускаю второй заказ и печатаю итоги, он берет промежуточный итог предыдущего заказа, налог и сумму, а затем добавляет их к новому заказу.
private void button1_Click(object sender, EventArgs e)
{
double sum = 0;
double tax = 0;
double total = 0;
foreach (MenuItems items in OrderList)
{
sum += items.price;
}
tax = sum * MenuItems.tax;
total = sum + tax;
txtTax.Text = tax.ToString("c");
txtSub.Text = sum.ToString("c");
txtTotal.Text = total.ToString("c");
}
Эта кнопка также добавляет все элементыв порядке и напечатайте их значения в валюте.
private void button2_Click(object sender, EventArgs e)
{
txtTotal.Clear();
txtSub.Clear();
txtTax.Clear();
ListBoxOrder.Items.Clear();
}
Эта кнопка предназначена для очистки текста из текстовых полей и списка.Чего мне не хватает, чтобы сбросить предыдущий «заказ» и тоже не иметь предыдущую итоговую сумму, промежуточную сумму и налоговое добавление вместе с отдельным заказом?
РЕДАКТИРОВАТЬ:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Data.OleDb;
namespace CafeWithDatabase
{
public partial class Form1 : Form
{
//Generic List to hold the Cafe items
List<MenuItems> OurCafeMenu = new List<MenuItems>();
List<MenuItems> OrderList = new List<MenuItems>();
List<string> cafe = new List<string>();
MenuItems item;
int counter = 0;
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
try
{
//Connection String to Access Database
string conn_string = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source= C:\\Users\\Vexum\\source\\repos\\CafeWithDatabase\\CafeWithDatabase\\CafeDatabase.accdb";
OleDbConnection conn = new OleDbConnection(conn_string);
//open connection
conn.Open();
//reader
OleDbDataReader reader;
//command to select all items from CafeItem table, with the connection to the database
OleDbCommand cmd = new OleDbCommand("SELECT * from CafeItems", conn);
//execute the reader
reader = cmd.ExecuteReader();
//clear the listBoxMenu for any potential existing items in the box
ListBoxMenu.Items.Clear();
//while loop makes the reader Read the data and add to the generic list
while (reader.Read())
{
counter += 1;
item = new MenuItems();
item.name = reader[0].ToString();
item.price = double.Parse(reader[1].ToString());
OurCafeMenu.Add(item);
}
//foreach loop puts the menu items into the listboxmenu
foreach (MenuItems item in OurCafeMenu)
{
ListBoxMenu.Items.Add(string.Format("{0} --- ${1}", item.name, item.price));
}
}
catch(Exception ex)
{
label4.Text = ex.Message;
}
}
//Button to exit the application, could also be this.Close();
private void button3_Click(object sender, EventArgs e)
{
Application.Exit();
}
//a button to clear the text boxes and the ListBoxOrder
private void button2_Click(object sender, EventArgs e)
{
txtTotal.Clear();
txtSub.Clear();
txtTax.Clear();
ListBoxOrder.Items.Clear();
}
//The ListBoxMenu gets the selected index, and then puts it into ListBoxOrder
private void ListBoxMenu_SelectedIndexChanged(object sender, EventArgs e)
{
int curItem = ListBoxMenu.SelectedIndex;
MenuItems temp;
ListBoxMenu.SelectedIndex = curItem;
ListBoxOrder.Items.Add(ListBoxMenu.SelectedItem);
temp = OurCafeMenu.ElementAt(curItem);
OrderList.Add(temp);
}
//if you double click on an item in the ListBoxOrder, it takes it out of the box
private void ListBoxOrder_DoubleClick(object sender, EventArgs e)
{
string i = ListBoxOrder.SelectedItem.ToString();
ListBoxOrder.Items.Remove(i);
}
//button to calculate the total of the selected items
private void button1_Click(object sender, EventArgs e)
{
double sum = 0;
double tax = 0;
double total = 0;
foreach (MenuItems items in OrderList)
{
sum += items.price;
}
tax = sum * MenuItems.tax;
total = sum + tax;
txtTax.Text = tax.ToString("c");
txtSub.Text = sum.ToString("c");
txtTotal.Text = total.ToString("c");
}
}
}
Извините, что не опубликовалвесь кодOrderList - это коллекция для хранения предметов и их цены.Затем он берет цены и добавляет их в текстовые поля для подытога, итога и налога.ListBoxOrder - это список, в который входят элементы, чтобы человек тоже мог видеть, что выбрано.