我有一个表格,其中有一个停靠在其中的面板。然后,我在主面板(名为ContainerPanel)上动态创建了15个面板(名为:panel_n)和15个图片框(名为:picturebox_n)。
在使用相关鼠标事件创建的面板(panel_n)上拖动任何图片框时。我想获得图片框被拖过的面板名称。似乎捕获了鼠标光标。
我尝试过创建一个IMessageFilter接口,但是在将任何一个图片框拖到任何一个面板上时仍然没有触发事件。
ClientRectangle.IntersectsWith函数也不起作用,因为co-ords始终为0,0。
我需要的只是拖动图片框的面板名称(最好是在mouseup事件中)
答案 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
更改为Move
或Link
或任何适合您正在做的事情。它只是更改了使用的鼠标指针图标。