C# Windows窗体将列表传递到新窗体
如何将变量传递到另一个窗体 我创建了以下类:C# Windows窗体将列表传递到新窗体,c#,winforms,C#,Winforms,如何将变量传递到另一个窗体 我创建了以下类: class Cart { private string productName; private int qtd; private decimal price; public decimal Price { get { return price; } set { price = v
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);
}
}
public分部类frmProducts:Form
{
List cartList=新列表();
私有void btnAddCart_单击(对象发送者,事件参数e)
{
如果(txtQtd.Text==“”)
{
MessageBox.Show(“输入您想要多少项。”,“产品”,MessageBox按钮。确定);
返回;
}
if(Convert.ToInt32(txtQtd.Text)>Convert.ToInt32(lblQtd.Text))
{
MessageBox.Show(“我们只有”+lblQtd.Text+“库存商品”,“产品”,MessageBoxButtons.OK);
返回;
}
购物车=新购物车();
cart.ProductName=lblProductName.Text;
cart.Qtd=Convert.ToInt32(lblQtd.Text);
cart.Price=Convert.ToDecimal(lblPrice.Text);
cartList.Add(购物车);
}
}
我有另一个WindowsForms可以使用cartList。如何将cartList发送到新的windows窗体?在新的windows窗体中声明cartList的属性。在显示该窗体之前设置属性。然后您的新表单可以使用该属性 让
frmProcessCart
成为下一个需要cartList
继续的表单。为此,您可以使用以下任一选项:
- 在该表单的构造函数中获取
:列表
cartList
传递给它的构造函数,这样您将获得与它们的列表相同的实例,您也可以继续执行该操作。在本例中,该表单的构造函数如下所示:
public frmProcessCart(List<Cart> cartList)
{
// Something here if needed
}
试着从变量的范围来思考,如果它们是全局级别的,那么最好使它们全局化。而且创建实体类来存储和传递全局数据要容易得多。您可以将购物车作为静态属性
公共静态列表购物车{Private set;get;}
,在主窗体中初始化它。将其与MainForm一起使用。CartI试图使cartList保持静态,但我得到了错误:命名空间不能直接包含字段或方法等成员。如果问题出在声明列表的位置,请确保定义属于类frmProducts
。查看更新
public partial class frmProducts : Form
{
public static List<Cart> cartList = new List<Cart>();
// Rest of code here
}