如何为控件分配订单号?

时间:2012-07-05 18:27:48

标签: c# winforms

我创建了一个方法,它将所有控件都绘制到面板上,但是它根据我列出的顺序绘制它们,这意味着PictureBox1将始终所有其他图片框之后。例如:

e.Graphics.DrawImage(PictureBox1.BackgroundImage,
    new Rectangle(PictureBox1.Location, PictureBox1.Size));

e.Graphics.DrawImage(PictureBox2.BackgroundImage,
    new Rectangle(PictureBox2.Location, PictureBox2.Size));

它绘制PictureBox1 第一个,然后PictureBox2 第二个,然后PictureBox3 第三个等......

这意味着PictureBox2在PictureBox1上绘制,PictureBox3在PictureBox2上绘制。这是显示重叠图像的图片:

现在,当我按下一个按钮时,焦点位于picturebox2上,我希望更改DrawImage顺序,以便最后绘制PictureBox2。 我相信你们其中一个人有很好的解决方案,我想听听你们的任何建议。

2 个答案:

答案 0 :(得分:1)

在您的问题中,您尚未明确确定面板中所有其他图片框的顺序的原因。但是,您可以使用SetChildIndex获得相同的效果。例如,要将PictureBox1的位置与PictureBox2交换,您可以执行以下操作:

var p1ndex = panel.Controls.IndexOf(pBox1);
var p2ndex = panel.Controls.IndexOf(pBox2);
panel.Controls.SetChildIndex(pBox1, p1ndex);
panel.Controls.SetChildIndex(pBox2, p2ndex);

在这里,pBox1可能是您在上面停留的最后一个PictureBox,而pBox2是您当前悬停在当前的那个...

答案 1 :(得分:0)

假设这是WinForms,您可以调用

picturebox2.BringToFront()

在重新绘制之前。

如果您需要更好的控制而不仅仅是“让我掌控所有其他控件”,您可以使用GetChildIndexSetChildIndex