如何将图片框部分覆盖在表单控件上

时间:2017-08-09 08:35:20

标签: c# winforms datagridview picturebox

我想让图像部分覆盖一个winform控件(在这种情况下是一个datagridview),但它似乎不像我想的那样工作。 我按照找到here的答案,当父母是控件(DGV)时它可以正常工作,但是当父母是表格时却没有... 我想要这样的东西: desired

但我得到的是这样的东西:
problematic

按照答案并将父母设置为DGV工作正常.... enter image description here

1 个答案:

答案 0 :(得分:2)

您可以使用两个 PictureBoxes并将一个 DGV以及嵌套另一个。然后将叠加层移动到正确的位置.. 两者应该相同,即具有相同的Image和相同的SizeMode

这是一个可以执行此操作的功能:

void overlayCtls(Control ctlBase, Control ctlOverlay, Control ctlTgt )
{
    ctlOverlay.BackColor = Color.Transparent;
    ctlOverlay.Parent = ctlTgt;
    ctlOverlay.Location = new Point(ctlBase.Left - ctlTgt.Left, ctlBase.Top - ctlTgt.Top);
}

结果:

enter image description here

注意:

  • 你显然需要进行嵌套,因为DGV不是容器,因此在设计器中移动它是不够的。
  • 即使在设计器中设置了BackColor,你仍然需要将BackColor设置为Transparent。除非在代码中设置,否则看起来它将从父级中获取。
  • 嵌套的子控件不仅会覆盖其ClientArea的{​​{1}},还会覆盖任何Parent