5

我有一个 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);
}
4

2 回答 2

6

既然你有 AutoScroll = true,你不应该做任何事情。您放置在面板中可见边界下方的任何控件都将自动在面板中创建适当的滚动距离。

如果您想手动覆盖它,请设置 AutoScroll = false 并使用 AutoScrollMinSize 属性自己设置画布的大小,例如:

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

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

于 2012-12-18T23:03:22.393 回答
0

尝试在 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();
于 2017-02-15T12:09:08.917 回答