c#中用winform,使用面向对象的编程思想,实现商品的销售和退货订单功能并通过databinding在列表中显示,操作数据显示列表使用ListBox
首先,我们需要创建一个商品类和订单类。
商品类:
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
订单类:
public class Order
{
public int Id { get; set; }
public DateTime Date { get; set; }
public List<OrderItem> Items { get; set; }
public decimal Total { get; set; }
}
public class OrderItem
{
public Product Product { get; set; }
public int Quantity { get; set; }
public decimal Subtotal { get { return Quantity * Product.Price; } }
}
接下来,我们创建一个窗体,并添加一个ListBox控件用于显示订单列表。我们还需要添加一些文本框和按钮用于添加、删除和修改订单。
public partial class Form1 : Form
{
private List<Order> orders = new List<Order>();
public Form1()
{
InitializeComponent();
listBox1.DataSource = orders;
listBox1.DisplayMember = "Id";
}
private void btnAddOrder_Click(object sender, EventArgs e)
{
Order order = new Order();
order.Id = orders.Count + 1;
order.Date = DateTime.Now;
order.Items = new List<OrderItem>();
orders.Add(order);
listBox1.DataSource = null;
listBox1.DataSource = orders;
listBox1.DisplayMember = "Id";
}
private void btnDeleteOrder_Click(object sender, EventArgs e)
{
Order order = listBox1.SelectedItem as Order;
orders.Remove(order);
listBox1.DataSource = null;
listBox1.DataSource = orders;
listBox1.DisplayMember = "Id";
}
private void btnAddItem_Click(object sender, EventArgs e)
{
Order order = listBox1.SelectedItem as Order;
Product product = new Product();
product.Id = orders.Count + 1;
product.Name = txtProductName.Text;
product.Price = decimal.Parse(txtProductPrice.Text);
OrderItem item = new OrderItem();
item.Product = product;
item.Quantity = int.Parse(txtQuantity.Text);
order.Items.Add(item);
order.Total = order.Items.Sum(x => x.Subtotal);
listBox1.DataSource = null;
listBox1.DataSource = orders;
listBox1.DisplayMember = "Id";
}
private void btnDeleteItem_Click(object sender, EventArgs e)
{
Order order = listBox1.SelectedItem as Order;
OrderItem item = order.Items[listBox2.SelectedIndex];
order.Items.Remove(item);
order.Total = order.Items.Sum(x => x.Subtotal);
listBox2.DataSource = null;
listBox2.DataSource = order.Items;
listBox2.DisplayMember = "Product.Name";
}
private void listBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (listBox1.SelectedItem != null)
{
Order order = listBox1.SelectedItem as Order;
listBox2.DataSource = order.Items;
listBox2.DisplayMember = "Product.Name";
}
}
}
在代码中,我们使用List集合来存储订单信息,并将其绑定到ListBox控件上。当添加、删除或修改订单时,我们只需要更新List集合的内容,并重新绑定到ListBox控件上即可。
在添加订单项时,我们首先创建一个商品对象并添加到订单项中,然后将订单项添加到订单中。在删除订单项时,我们只需要从订单项集合中移除相应的订单项即可。
最后,在ListBox的SelectedIndexChanged事件中,我们判断当前选中的订单并将其订单项绑定到另一个ListBox控件中显示。
通过上述操作,我们就可以实现商品的销售和退货订单功能,并通过databinding在列表中显示。

原文地址: http://www.cveoy.top/t/topic/r9V 著作权归作者所有。请勿转载和采集!