5

内部に 2 つのコントロールがあるパネルがあります。それらがパネルの境界線に貼り付けられていればよかったのですが(パネルには幅と高さを変更できません)、パネルから垂直方向に(コントロール)が取得するスペースのサイズを変更する可能性があります。

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

2 つのリストビューが (縦に) 並べて配置されます。それらの「高さを変更」できるようにしたいと考えています(サイズを変更する境界線を選択することにより)。

私の言いたいことを理解していただければ幸いです。事前に助けてくれてありがとう。

4

5 に答える 5

7

デザイナー ツールボックスの Containers セクションからSplitContainer コントロールを使用することをお勧めします。

SplitContainer の使用に関する MSDN トレーニング ビデオを次に示します

于 2012-05-08T13:21:03.153 に答える
2

上の方のdocプロパティをtopに設定します。同じコンテナ(パネル)に垂直方向のスプリッターバーを追加します。下の方のDockプロパティを塗りつぶすように設定します。とにかくそれを行う1つの方法。

于 2012-05-08T13:24:00.230 に答える
2

SplitContainerが探しているものであるという Paul の意見に同意します。分割コンテナー内に配置するコントロールの Dock プロパティと Anchor プロパティを設定する必要があることを付け加えておきます。子コントロールのDockプロパティをFillに設定すると、パネルのサイズに関係なく、コンテナ全体を埋めるように拡張されます。このAnchorプロパティは、パネルに複数のコントロールがある場合に使用されます。その場合、子コントロールのAnchorプロパティを設定して、コンテナの側に「くっつく」側を子コントロールに伝えます。これら 2 つのプロパティのより包括的な概要については、このページを参照してください。

また、コントロール自体にDockまたはAnchorプロパティを設定する必要があります。SplitContainerこれにより、フォームのサイズが変更されたときにサイズが変更されます。次に、内の子コントロールにAnchor/Dockプロパティを設定するSplitContainerと、コンテナのサイズが変更されると、子コントロールのサイズも変更されます。

于 2012-05-08T13:25:47.890 に答える
2

それを達成するには、テーブルレイアウトパネルを利用する必要があります

于 2012-05-08T13:18:41.613 に答える
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 に答える