我有一个 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:
当我启动我的应用程序并单击“添加图像”按钮时,我以编程方式添加一个包含我的 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 大得多。)
这是一个屏幕截图:
我是否错误地设置了 Panel 或 PictureBox 的属性?如果是这样,我需要做什么?
谢谢你。
==更新===================================
我按照建议将 PictureBox 的 Anchor 属性更改为 none。这是我更新的布局:
但是,这仍然不起作用。我看到了同样的问题。没有滚动条
这可能与当我将 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);
===========================================