3

我遇到了关于 system.windows.forms.panel 的自动滚动的问题。我有一个面板,我用复选框填充,如果复选框总数的高度要求超过面板的高度,它应该添加一个垂直滚动条。我的问题是它按预期处理垂直滚动条,但它也显示不需要的水平滚动条。我通过将 System.Windows.Forms.SystemInformation.VerticalScrollBarWidth 添加到面板宽度来调整面板的宽度。

int prevMainTop = 0;
int maxWidth = 0;

foreach (List<String> arr in folderArr)
{
    if (arr[0].Length * 7 > maxWidth) { maxWidth = arr[0].Length * 7; }
}

foreach (List<String> arr in folderArr)
{
    CheckBox cb = new CheckBox();
    cb.BackColor = Color.Chocolate;
    cb.Checked = true;
    cb.AutoSize = false;
    cb.Width = maxWidth;
    cb.Name = arr[0];
    cb.Text = arr[0];
    cb.Tag = arr[1];
    cb.Top = prevMainTop;
    prevMainTop = prevMainTop + 25;
    this.mainPanel.Controls.Add(cb);           
}

this.mainPanel.Width = maxWidth + System.Windows.Forms.SystemInformation.VerticalScrollBarWidth;

图像显示复选框右侧不需要的添加空间,添加到控件背景的颜色以说明控件的大小。

4

1 回答 1

2

检查面板AutoScrollMargin的特性。应该是,您可能还需要设置该值。AutoScrollMinSizeAutoScrollMargin(0,0)AutoScrollMinSizemaxWidth

于 2013-02-25T10:58:07.523 回答