C# 面板垂直滚动

C# 面板垂直滚动,c#,winforms,visual-studio-2010,panel,C#,Winforms,Visual Studio 2010,Panel,我有一个winform应用程序,其中有一个面板控件 我希望能够在面板内滚动,并将控件垂直放置在超过控件当前高度的位置,然后有一个可以帮助我查看所有控件的滚动条,我如何实现这一点 这也是设计器代码,以防有人想查看代码: private void InitializeComponent() { this.panel1 = new System.Windows.Forms.Panel(); this.SuspendLayout(); // // panel1 // thi

我有一个winform应用程序,其中有一个面板控件

我希望能够在面板内滚动,并将控件垂直放置在超过控件当前高度的位置,然后有一个可以帮助我查看所有控件的滚动条,我如何实现这一点

这也是设计器代码,以防有人想查看代码:

private void InitializeComponent()
{
  this.panel1 = new System.Windows.Forms.Panel();
  this.SuspendLayout();
  // 
  // panel1
  // 
  this.panel1.AutoScroll = true;           
  this.panel1.BackColor = System.Drawing.SystemColors.ControlLightLight;
  this.panel1.Location = new System.Drawing.Point(12, 12);    
  this.panel1.Name = "panel1";
  this.panel1.Size = new System.Drawing.Size(267, 365);
  this.panel1.TabIndex = 0;
  // 
  // Form2
  // 
  this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
  this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
  this.ClientSize = new System.Drawing.Size(456, 410);
  this.Controls.Add(this.panel1);
  this.Name = "Form2";
  this.Text = "Form2";
  this.ResumeLayout(false);
}

因为您有AutoScroll=true,所以不必做任何事情。放置在面板中可见边界下方的任何控件都将自动在面板中创建适当的滚动距离

如果要手动覆盖该值,请设置AutoScroll=false,并使用AutoScrollMinSize属性自行设置画布的大小,例如:

panel1.AutoScrollMinSize = new Size(0, 1200);

您可能想考虑将面板锚定到窗体的四个边,或者停靠填充,因为它看起来像一个可调整的窗体。同样,面板将为您处理滚动条大小。

在MDIForm的面板中加载其他表单时,请尝试此操作。它工作得很好

myForm.TopLevel = false;
myForm.AutoScroll = true;
main_panel.Controls.Clear();
main_panel.Controls.Add(myForm);
main_panel.AutoScrollMinSize = new Size(0, myForm.Height);
myForm.Show();