1

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

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

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

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

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

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

谁能提出一个巧妙的解决方案来防止这种情况发生?还是我需要检查面板的滚动位置并在重绘后以编程方式将其设置回相同的值?

4

1 回答 1

0

听起来面板不是必需的。我猜您将 FlowLayoutPanel 的 AutoSize 设置为 true。

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

于 2012-07-11T17:17:33.173 回答