动态生成的控件问题

时间:2010-06-14 12:35:46

标签: c# panel picturebox

我有一个表格,其中有一个停靠在其中的面板。然后,我在主面板(名为ContainerPanel)上动态创建了15个面板(名为:panel_n)和15个图片框(名为:picturebox_n)。

在使用相关鼠标事件创建的面板(panel_n)上拖动任何图片框时。我想获得图片框被拖过的面板名称。似乎捕获了鼠标光标。

我尝试过创建一个IMessageFilter接口,但是在将任何一个图片框拖到任何一个面板上时仍然没有触发事件。

ClientRectangle.IntersectsWith函数也不起作用,因为co-ords始终为0,0。

我需要的只是拖动图片框的面板名称(最好是在mouseup事件中)

1 个答案:

答案 0 :(得分:1)

如果您给图片框一个OnMouseDown事件,说明如下:

(sender as PictureBox).DoDragDrop(sender, DragDropEffects.Copy);

然后你可以将面板'AllowDrop属性设置为true,在他们的OnDragDrop事件中,你可以得到这样的名字:

string myName = (sender as Panel).Name;

编辑:此外,您需要为面板提供一个OnDragEnter事件,如下所示:

e.Effect = DragDropEffects.Copy;

当然,您可以将Copy更改为MoveLink或任何适合您正在做的事情。它只是更改了使用的鼠标指针图标。