繁体   English   中英

动态生成的控件问题

[英]Dynamically generated controls issue

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

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

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

ClientRectangle.IntersectsWith函数也不起作用,因为坐标始终为0,0。

我需要的是面板名称,将图片框拖到上面(最好在mouseup事件上)

如果给图片框一个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 ”,也可以Copy其更改为适合您正在执行的操作。 它只是更改使用的鼠标指针图标。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM