代码之家  ›  专栏  ›  技术社区  ›  Thomas

动态生成的控件问题

  •  1
  • Thomas  · 技术社区  · 16 年前

    我有一张表格,里面有一个面板。然后,我在主面板(名为ContainerPanel)上动态创建15个面板(名为:panel\ n)和15个picturebox(名为:picturebox\ n)。

    在使用相关鼠标事件创建的面板(panel\n)上拖动任意picturebox时。我想知道图片框被拖过的面板的名称。鼠标光标似乎被捕获了。

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

    ClientRectangle.IntersectsWith函数也不起作用,因为余字总是0,0。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Blorgbeard    16 年前

    如果给pictureboxes一个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

    推荐文章