1

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

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

图像预览自定义控件

我希望 PictureBox 可以滚动,因此我向 CustomControl 添加了一个面板:

图像预览自定义控制 - 面板

我将此面板的 Anchor 属性设置为Left|Right|Top|Bottom并将 AutoScroll 属性设置为True

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

图像预览自定义控件 - 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 大得多。)

这是一个屏幕截图:

带有包含图片的 TabPage 的选项卡控件

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

谢谢你。

==更新===================================

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

图像预览自定义控件 - 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);

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

4

1 回答 1

1

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

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

于 2013-10-08T14:33:32.057 回答