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 に答える