Windows窗体:重绘后保留滚动位置

时间:2012-07-11 16:27:09

标签: .net winforms scroll redraw

我正在Windows窗体中构建一个简单的图像浏览器/查看器应用程序。

主窗体包含一个启用了AutoScroll的Panel控件,可以为主应用程序MenuStrip下面的图像创建一个可滚动的内容区域。

在此Panel中,动态放置了我定义的一个或多个UserControl对象。其中每个都包含一个GroupBox(显示每组缩略图的标题),后者又包含一些按钮和一个FlowLayoutPanel,其中填充了一个或多个显示图像缩略图的PictureBox对象。

可以单击每个缩略图以全尺寸打开所选图像,或在应用程序窗口中尽可能接近它。这是通过动态生成占据整个窗口的PictureBox控件来实现的,其中z-index值使其显示在缩略图网格上方,从而使其模糊不清。

我遇到的问题是,当我创建和销毁重叠的PictureBox控件时,包含缩略图的底层Panel控件会自行重绘,这会将其滚动位置重置为顶部,如果您之前已向下滚动,这很烦人所有

奇怪的是,有时滚动位置会被保留,我无法确定解释不一致行为的模式。

有人能建议一个简洁的解决方案来防止这种情况发生吗?或者我是否需要检查Panel的滚动位置并在重新绘制后以编程方式将其设置回相同的值?

1 个答案:

答案 0 :(得分:0)

听起来好像小组没有必要。我猜你将FlowLayoutPanel的AutoSize设置为true。

尝试仅使用FlowLayoutPanel,因为它将为您提供默认AutoSize = false的滚动。