5

我有一个面板,里面有两个控件。我希望它们被粘在面板的边框上(面板有一些无法更改的宽度和高度),但有可能调整它们(控件)在垂直方向上从面板获得的空间量。

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

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

我希望你明白我的意思。提前感谢您的帮助。

4

5 回答 5

7

我建议使用设计器工具箱的 Containers 部分中的SplitContainer 控件

这是有关使用 SplitContainer 的 MSDN 培训视频。

于 2012-05-08T13:21:03.153 回答
2

您需要使用表格布局面板来实现

于 2012-05-08T13:18:41.613 回答
2

将上部的 doc 属性设置为顶部。在同一容器(面板)中添加一个方向为垂直的分隔条。将下一个的 Dock 属性设置为填充。无论如何,这是一种方法。

于 2012-05-08T13:24:00.230 回答
2

我同意 Paul 的观点,SplitContainer就是您正在寻找的东西。我要补充一点,您需要设置放在拆分容器内的控件的 Dock 和 Anchor 属性。如果您将子控件的Dock属性设置为Fill,它将扩展以填满整个容器,而不管面板的大小如何。Anchor如果面板中有多个控件,则使用该属性。在这种情况下,您设置子控件的Anchor属性来告诉子控件哪些边“粘”到容器的边上。请参阅此页面以更全面地了解这两个属性。

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

于 2012-05-08T13:25:47.890 回答
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);
于 2012-05-08T13:22:35.227 回答