上下文:
我正在使用Visual Studio 2017开发Windows Form C#应用程序。
该应用程序具有一个充满按钮的可滚动面板(AutoScroll = true
)。
每个按钮都与一个图片框相关联。
它们都是重叠的,并且具有相同的大小,并且共享相同的Tag
属性。
标记为:btn0和picBox0为0,btn1和picBox1为1,依此类推...
单击按钮时,其Visible
属性设置为false
,而相应的picBox的Visible
属性设置为true
。
我的问题:
当picBox的可见性设置为true时,它不会在放置在表单设计器中的位置生成/显示。
它似乎没有在父面板的相对位置生成...
以下图片可帮助大家了解我的问题:
您几乎看不到picBox5的边框,但是它们在那里! (放大!哈哈)
在您问:
之前是的,picBox的质量很好Tag
(5)
位置在设计器中很好,在应用运行时不会更改。
我看着调试器,位置似乎很好...
我想知道picBox是否从父表单而不是从父滚动面板获取其位置?
如何使图片框在适当的位置生成?
答案 0 :(得分:0)
我要做的就是考虑滚动条的位置来重置目标picBox的位置:
picBox.Location = new System.Drawing.Point(picBox.Location.X + panel.AutoScrollPosition.X, picBox.Location.Y + panel.AutoScrollPosition.Y);
picBox.Visible = true;
您还需要确保可见性更改是在重定位之后。
此可见性更改使滚动条更改其位置,并使重定位错误。