如何将变量传递给另一种形式?

我创建了以下类:

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/

10-10 16:37