我是C#(Apprentice,5个月,3周培训)的新手,其中一项任务是使用C#以购物篮的形式创建一个事件驱动的计算机程序。
我希望现在接近任务的结束,我正在设计ShoppingBasketForm
。我有一个班级OrderItem
,其中包含ProductName
和Quantity
等属性。我还有一个班级ShoppingBasket
,其中包含List<OrderItem>OrderItems
的属性。< / p>
如何让我的表单上的lstBoxBasket
以购物篮方式水平显示List<OrderItem>OrderItems
属性?
提前致谢。
例如,理想显示,忽略代码块,只是显示它的最简单方法:
Oranges 5 £1.20
Apples 3 £0.80
橙子为ProductName
,5为Quantity
,而1.20为LatestPrice
。
答案 0 :(得分:1)
正如其他人所提到的,如果允许使用DataGridView
或ListView
,这将是一项简单的任务。
但由于必须使用ListBox
,您可以将DrawMode
属性设置为OwnerDrawnFixed
,并处理ListBox.DrawItem
事件,像这样:
myListBox.DrawItem += new DrawItemEventHandler(this.DrawItemHandler);
myListBox.DrawMode = DrawMode.OwnerDrawnFixed;
private void DrawItemHandler(object sender, DrawItemEventArgs e)
{
e.DrawBackground();
e.DrawFocusRectangle();
OrderItem item = myListBox.Items[e.Index] as OrderItem;
if (item == null) return;
Rectangle nameRect = new Rectangle(e.Bounds.Location, new Size(e.Bounds.Width / 3, e.Bounds.Height));
e.Graphics.DrawString(item.ProductName, Font, Brushes.Black, nameRect);
Rectangle quantityRect = new Rectangle(...);
e.Graphics.DrawString(item.Quantity.ToString(), Font, Brushes.Black, quantityRect);
}
需要进行一些调整,你必须决定是否缩放或剪辑水平溢出,但你可以完全自由地渲染项目。