【问题标题】:Panel scroll vertically面板垂直滚动
【发布时间】:2012-12-06 05:52:52
【问题描述】:

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

【问题讨论】:

    标签: c# winforms visual-studio-2010 panel


    【解决方案1】:

    尝试在 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();
    

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2013-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-12
        • 1970-01-01
        • 2013-10-13
        • 2014-07-11
        相关资源
        最近更新 更多