在可滚动面板中可见时,图片框的位置错误

时间:2018-07-25 13:02:39

标签: c# winforms panel picturebox

上下文:

我正在使用Visual Studio 2017开发Windows Form C#应用程序。

该应用程序具有一个充满按钮的可滚动面板(AutoScroll = true)。

每个按钮都与一个图片框相关联。

它们都是重叠的,并且具有相同的大小,并且共享相同的Tag属性。

标记为:btn0和picBox0为0,btn1和picBox1为1,依此类推...

单击按钮时,其Visible属性设置为false,而相应的picBox的Visible属性设置为true

我的问题:

当picBox的可见性设置为true时,它不会在放置在表单设计器中的位置生成/显示。

它似乎没有在父面板的相对位置生成...

以下图片可帮助大家了解我的问题:

之前: enter image description here

之后: enter image description here

您几乎看不到picBox5的边框,但是它们在那里! (放大!哈哈)

在您问:

之前

是的,picBox的质量很好Tag(5)

位置在设计器中很好,在应用运行时不会更改。

我看着调试器,位置似乎很好...

我想知道picBox是否从父表单而不是从父滚动面板获取其位置?

如何使图片框在适当的位置生成?

1 个答案:

答案 0 :(得分:0)

我要做的就是考虑滚动条的位置来重置目标picBox的位置:

picBox.Location = new System.Drawing.Point(picBox.Location.X + panel.AutoScrollPosition.X, picBox.Location.Y + panel.AutoScrollPosition.Y);
picBox.Visible = true;

您还需要确保可见性更改是在重定位之后

此可见性更改使滚动条更改其位置,并使重定位错误。