动态生成的控件问题

发布于 2024-09-05 18:19:15 字数 346 浏览 6 评论 0原文

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

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

我尝试创建一个 IMessageFilter 界面,但将其中一个图片框拖动到任何一个面板上时仍然没有触发任何事件。

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

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

I have a form with a panel docked in it. I then dynamically create 15 panels (named: panel_n) and 15 pictureboxes (named: picturebox_n) on the primary panel (named ContainerPanel).

When dragging the any picturebox over a panel (panel_n) created using the relevant mouse events. I would like to get the panel's name that the picture box was dragged over. The mouse cursor seems to be captured.

I have tried creating a IMessageFilter interface, but there are still no events that trigger when dragging one of the pictureboxes over any one of the panels.

The ClientRectangle.IntersectsWith function also does not work as the co-ords are always 0,0.

All I need is the panel name where the picturebox was dragged over (preferably on the mouseup event)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

信仰 2024-09-12 18:19:15

如果您为图片框提供一个 OnMouseDown 事件,其内容如下:

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

然后您可以将面板的 AllowDrop 属性设置为 true,并在其 OnDragDrop 事件中,您可以获取其名称,如下所示:

string myName = (sender as Panel).Name;

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

e.Effect = DragDropEffects.Copy;

当然,您可以将 Copy 更改为 MoveLink 或任何适合的内容你在做什么。它只是更改所使用的鼠标指针图标。

If you give the pictureboxes an OnMouseDown event that says something like this:

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

Then you can set the panels' AllowDrop property to true, and in their OnDragDrop event, you can get their name like this:

string myName = (sender as Panel).Name;

Edit: Also, you need to give the panels an OnDragEnter event like this:

e.Effect = DragDropEffects.Copy;

Of course, you can change Copy to Move or Link or whatever is appropriate for what you're doing. It just changes the mouse-pointer icon that's used.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文