c#winforms使控件可调整大小

时间:2012-05-08 13:16:14

标签: c# winforms user-interface

我有一个内置两个控件的面​​板。我希望它们坚持面板的边框(面板有一些宽度和高度无法改变),但有可能调整它们(控件)从面板垂直方向获得的空间量。

panel.Controls.Add(listview1);
panel.Controls.Add(listview2);

两个列表视图一个接一个地(垂直地)放置。我希望有可能“改变它们的高度”(通过选择它们之间的边界来调整大小)。

我希望你理解我的意思。提前感谢您的帮助。

5 个答案:

答案 0 :(得分:7)

我建议您使用设计器工具箱的容器部分中的SplitContainer control

这是MSDN training video on using a SplitContainer.

答案 1 :(得分:2)

您需要使用Table Layout Panel来实现

答案 2 :(得分:2)

将上一个的doc属性设置为top。 在同一容器(面板)中添加一个方向为垂直的分割条。设置较低的Dock属性以填充。 无论如何,这样做的一种方式。

答案 3 :(得分:2)

我同意保罗所说SplitContainer正是你要找的。我想补充一点,你需要设置放在拆分容器中的控件的Dock和Anchor属性。如果将子控件的Dock属性设置为Fill,则无论面板的大小如何,它都将展开以填充整个容器。如果面板中有多个控件,则使用Anchor属性。在这种情况下,您设置子控件的Anchor属性以告诉子控件哪些方“粘贴”到容器的一侧。有关这两个属性的详细信息,请参阅this page

此外,您还需要在Dock控件本身上设置AnchorSplitContainer属性。这将使表单调整大小时调整大小。然后在Anchor内的子控件上设置Dock / SplitContainer属性将导致子控件在容器调整大小时调整大小。

答案 4 :(得分:1)

您是否考虑在ListViews上使用Anchor?

        this.panel1 = new System.Windows.Forms.Panel();
        this.listView1 = new System.Windows.Forms.ListView();
        this.listView2 = new System.Windows.Forms.ListView();
        this.panel1.SuspendLayout();
        this.SuspendLayout();
        // 
        // panel1
        // 
        this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
        | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right)));
        this.panel1.Controls.Add(this.listView2);
        this.panel1.Controls.Add(this.listView1);
        this.panel1.Location = new System.Drawing.Point(12, 12);
        this.panel1.Name = "panel1";
        this.panel1.Size = new System.Drawing.Size(413, 280);
        this.panel1.TabIndex = 0;
        // 
        // listView1
        // 
        this.listView1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right)));
        this.listView1.Location = new System.Drawing.Point(3, 0);
        this.listView1.Name = "listView1";
        this.listView1.Size = new System.Drawing.Size(410, 97);
        this.listView1.TabIndex = 0;
        this.listView1.UseCompatibleStateImageBehavior = false;
        // 
        // listView2
        // 
        this.listView2.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left) 
        | System.Windows.Forms.AnchorStyles.Right)));
        this.listView2.Location = new System.Drawing.Point(0, 183);
        this.listView2.Name = "listView2";
        this.listView2.Size = new System.Drawing.Size(410, 97);
        this.listView2.TabIndex = 1;
        this.listView2.UseCompatibleStateImageBehavior = false;
        // 
        // Form1
        // 
        this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
        this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
        this.ClientSize = new System.Drawing.Size(437, 304);
        this.Controls.Add(this.panel1);
        this.Name = "Form1";
        this.Text = "Form1";
        this.panel1.ResumeLayout(false);
        this.ResumeLayout(false);