如何使用EventHandler将其他对象类型从函数发送到另一个函数

时间:2016-06-19 14:54:38

标签: c#

我想创建一个使用INI文件来存储新的FlowLayoutPanels的应用程序,我无法处理的是当我想要创建一个EventHandler时,我想要创建一个新的FlowLayoutPanel内的PictureBox来删除它非常自己的FlowLayoutPanel.Here是一些代码:

    private void Function(object sender, EventArgs e)
    {
         FlowLayoutPanel flP = new FlowLayoutPanel();
         PictureBox picB = new PictureBox();
         Label laB = new Label();
         flP.Controls.Add(picB);
         flP.Controls.Add(laB);
         flowLayoutPanel1.Controls.Add(flP);
         picB.DoubleClick += picB_DoubleClick;
    }

    private void picB_DoubleClick(object sender, EventArgs e)
    {
        FlowLayoutPanel flp = (FlowLayoutPanel)sender;
        flp.Dispose();
    }

1 个答案:

答案 0 :(得分:1)

您收到该错误,因为click事件的object sender参数实际上是图片框对象。您正尝试将图片框作为流布局面板。你不能这样做。 flowlayoutpanel不是图片框对象,也不会从图片框继承。

您可能尝试做的事情可以通过将发件人转换为图片框来完成:var pb = (picturebox) sender;然后获取图片框的父级var flp = pb.parent as flowlayoutpanel;,然后处理flp。 flp.dispose();

我正在我的iPhone上键入此回答而无法访问VS,我不确定从子对象的事件中处理父对象的后果。