包含PictureBox不滚动的面板

时间:2013-10-08 14:25:26

标签: c# .net winforms

我有一个Windows窗体应用程序,其中包含一个TabControl,我用它来显示每个TabPage的图像。

在TabPage中,我放置了一个CustomControl来显示图像。 CustomControl有一些用于设置图像布局的复选框,PictureBox和一个用于删除图像的按钮。这就是我的自定义控件的样子:

Image Preview Custom Control

我希望PictureBox可以滚动,所以为了这样做,我将一个Panel添加到CustomControl:

Image Preview Custom Control - Panel

我将此Panel的Anchor属性设置为 Left | Right | Top | Bottom ,将AutoScroll属性设置为 True

接下来,我将PictureBox放在Panel中我将其Anchor属性设置为 Left | Right | Top | Bottom ,将SizeMode设置为 AutoSize

Image Preview Custom Control - PictureBox

当我启动我的应用程序并单击“添加图像”按钮时,我以编程方式添加包含我的CustomControl的新TabPage,然后将图像添加到CustomControl:

// inside my main forms callback
ImagePreviewCustomControl previewControl = new ImagePreviewCustomControl(bitMap);
previewControl.Dock = DockStyle.Fill;
TabPage tabPage = new TabPage(Path.GetFileNameWithoutExtension(imageFileName));                
tabPage.Controls.Add(previewControl);
imagesTabControl.TabPages.Add(tabPage);

// inside the custom control after the constructor
imagePreviewPictureBox.BackgroundImage = bitMap;
imagePreviewPictureBox.BackgroundImageLayout = imageLayout;

但是,如果添加的图像大于PictureBox,我看不到任何滚动条。 (图像尺寸为1035 x 1024,因此它比PictureBox大得多。)

以下是截图:

Tab Control With TabPage Containing Picture

我是否错误地设置了Panel或PictureBox的属性?如果是这样,我需要做什么?

谢谢。

== UPDATE ==================================

我按照建议将PictureBox的Anchor属性更改为none。这是我更新的布局:

Image Preview Custom Control - PictureBox

然而,这仍然不起作用。我看到了同样的问题。没有滚动条

这是否与以下事实有关:当我将CustomControl添加到TabPage时,我将它的Dock设置为 Fill

ImagePreviewCustomControl previewControl = new ImagePreviewCustomControl(bitMap);
previewControl.Dock = DockStyle.Fill; // << << <<
TabPage tabPage = new TabPage(Path.GetFileNameWithoutExtension(imageFileName));                
tabPage.Controls.Add(previewControl);
imagesTabControl.TabPages.Add(tabPage);

==========================================

1 个答案:

答案 0 :(得分:1)

  

接下来,我将PictureBox放在Panel中我将其Anchor属性设置为Left | Right | Top | Bottom ...

因此Panel不需要滚动,因为图片框永远不会超出视口。不要Anchor图片框。