如何将变量传递给另一种形式?
我创建了以下类:
class Cart
{
private string productName;
private int qtd;
private decimal price;
public decimal Price
{
get
{
return price;
}
set
{
price = value;
}
}
public string ProductName
{
get
{
return productName;
}
set
{
productName = value;
}
}
public int Qtd
{
get
{
return qtd;
}
set
{
qtd = value;
}
}
}
我有一种表格可以在购物车中添加值:
public partial class frmProducts : Form
{
List<Cart> cartList = new List<Cart>();
private void btnAddCart_Click(object sender, EventArgs e)
{
if(txtQtd.Text == "")
{
MessageBox.Show("Enter how many items do you want.", "Products", MessageBoxButtons.OK);
return;
}
if (Convert.ToInt32(txtQtd.Text) > Convert.ToInt32(lblQtd.Text))
{
MessageBox.Show("We onlye have " + lblQtd.Text + " items in stock.", "Products", MessageBoxButtons.OK);
return;
}
Cart cart = new Cart();
cart.ProductName = lblProductName.Text;
cart.Qtd = Convert.ToInt32(lblQtd.Text);
cart.Price = Convert.ToDecimal(lblPrice.Text);
cartList.Add(cart);
}
}
我有另一个可以与cartList一起使用的WindowsForms。如何将cartList发送到新的WindowsForms?
最佳答案
让frmProcessCart
是您需要cartList
继续进行的下一个表单。为此,您可以使用以下任何选项:
在该形式的构造函数中获取List<Cart>
:
这意味着您必须通过新窗体的构造函数将cartList
传递给新窗体,这样您将获得它们的列表的相同实例,也可以继续进行操作。在这种情况下,该形式的构造函数如下所示:
public frmProcessCart(List<Cart> cartList)
{
// Something here if needed
}
另一种选择是将
cartList
作为静态字段:在这种情况下,您可以通过frmProducts.cartList从应用程序中的任何其他形式访问
cartList
,而无需传递任何实例或创建frmProducts
的任何实例。在这种情况下,cartList的定义将如下所示public partial class frmProducts : Form
{
public static List<Cart> cartList = new List<Cart>();
// Rest of code here
}
关于c# - Windows表单将列表传递给新表单,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40966809/