首页 > 解决方案 > 将数据从 UserControl 传递到窗体

问题描述

我有一个FlowLayoutPanel内部主窗体,其中FlowLayoutPanel填充了 UserControls (类型UCProducts)。

我的 UserControl 有一个 PictureBox 和一个(Product类)对象。

用户控件:(简化):

public partial class UCProducts : UserControl
{
    public Product product;
    public UCProducts(Product product)
    {
        InitializeComponent();
        this.product = product;
    }
}

形式:

for (int i = 0; i < SomeList.Count; i++)
{
    uCProducts = new UCProducts(SomeList[i]);
    uCProducts.ptcbProduct.Click += new EventHandler(uCProducts_click);
    flpClothing.Controls.Add(uCProducts);
}

单击 PictureBox 时,我想UCProducts从表单访问产品对象。我试图用新的事件处理程序来做,但我做不到。

这就是我尝试的方式:

void uCProducts_click(object sender, EventArgs e)
{
    PictureBox tempPic = (PictureBox)sender;
}

可以Sender直接发送 UserControl 吗?如何在表单中拉取产品对象?

标签: c#winforms

解决方案


Parent一种方法是通过PictureBox 控件的属性访问 UserControl 。然后,您可以product像往常一样访问其成员:

void uCProducts_click(object sender, EventArgs e)
{
    PictureBox tempPic = (PictureBox)sender;
    UCProducts ucProducts = tempPic.Parent as UCProducts;
    Product theProduct = ucProducts.product;
}

不过,您可能应该转换product 为属性。此外,请尽量遵守标准 命名约定


推荐阅读