我有一个Windows窗体应用程序,其中包含一个TabControl,我用它来显示每个TabPage的图像。
在TabPage中,我放置了一个CustomControl来显示图像。 CustomControl有一些用于设置图像布局的复选框,PictureBox和一个用于删除图像的按钮。这就是我的自定义控件的样子:
我希望PictureBox可以滚动,所以为了这样做,我将一个Panel添加到CustomControl:
我将此Panel的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的属性?如果是这样,我需要做什么?
谢谢。
== UPDATE ==================================
我按照建议将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);
==========================================
答案 0 :(得分:1)
接下来,我将PictureBox放在Panel中我将其Anchor属性设置为Left | Right | Top | Bottom ...
因此Panel
不需要滚动,因为图片框永远不会超出视口。不要Anchor
图片框。