【问题标题】:Panel Containing PictureBox Not Scrolling包含 PictureBox 的面板不滚动
【发布时间】:2013-10-08 14:25:26
【问题描述】:

我有一个 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 的属性?如果是这样,我需要做什么?

谢谢。

==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);

=========================================== em>

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

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

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

    【讨论】:

    • 我应该将 Dock 设置为任何东西吗?
    • @JanTacci,不。设置Dock 基本上会做同样的事情。只是让图片框随着它的内容而增长和缩小。我想您可以从技术上Anchor 设置为Top|Left,但我认为您可以不用管它,因为这应该是默认值。
    • 底层面板呢?它的 Dock/Anchor 属性应该是什么?
    • @JanTacci,Panel 很好。您已将其设置为与父级一起成长,因为它已固定在各个方面。
    • 您说:“您已将其设置为与父级一起成长,因为它已固定在各个方面” 这对面板是否正确?
    猜你喜欢
    • 2013-06-14
    • 1970-01-01
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多