我會建議你做出自己的用戶控制每個訂單(每行)。 在項目上下文菜單中選擇Add-> User control ...,然後輸入控制名稱「MyOrderControl」並將所有訂單的控件放在上面。
您還需要創建特定類來保存訂單的數據(如果ouy沒有這樣的類)。並添加到MyOrderControl特殊方法以返回該類的實例。
public partial class MyOrderControl : UserControl
{
public MyOrderControl()
{
InitializeComponent();
}
public class Order
{
public string Name { get; set; }
public int Quantity { get; set; }
}
public Order GetFilledOrder()
{
//Validate data
return new Order()
{
Name = textBox1.Text,
Quantity = (int)numericUpDown1.Value
};
}
}
在表單初始化中,您可以創建任意數量的控件實例。您可以使用FlowLayoutPanel自動放置它們。
public Form1()
{
InitializeComponent();
const int nOrders = 10;
for (int n = 0; n < nOrders; n++)
{
flowLayoutPanel1.Controls.Add(new MyOrderControl());
}
}
,然後添加spectial方法來檢索所有的成品(使用System.Collections.Generic,System.Linq的):
public IEnumerable<MyOrderControl.Order> GetOrders()
{
foreach (var order in flowLayoutPanel1.Controls.OfType<MyOrderControl>())
{
yield return order.GetFilledOrder();
}
}
它可以讓你從父窗體訪問所有的訂單:
public void AcquireOrders()
{
var form = new Form1();
if (form.ShowDialog() != DialogResult.OK)
return;
foreach (var order in form.GetOrders())
{
System.Diagnostics.Debug.Print("Order: {0} Qty={1}",
order.Name, order.Quantity);
}
}
太棒了!這正是我所期待的。非常感謝您的回答 –