2

パネル内に4つのボタンを含めました。パネルはメインウィンドウにドッキングされています。

メインウィンドウのサイズを変更しても、新しく変更されたウィンドウサイズに対して4つのボタンの位置が変更されません。これを実現するために、VS2010Designerビューを使用しています。

これがdesigner.csから生成されたコード全体です

private void InitializeComponent()
{
    this.statusStrip1 = new System.Windows.Forms.StatusStrip();
    this.toolStripStatusLabel1 = new System.Windows.Forms.ToolStripStatusLabel();
    this.TreeDDC = new System.Windows.Forms.TreeView();
    this.BtnPointCtrl = new System.Windows.Forms.Button();
    this.BtnLogic = new System.Windows.Forms.Button();
    this.BtnComm = new System.Windows.Forms.Button();
    this.BtnSystem = new System.Windows.Forms.Button();
    this.panel1 = new System.Windows.Forms.Panel();
    this.statusStrip1.SuspendLayout();
    this.panel1.SuspendLayout();
    this.SuspendLayout();
    // 
    // statusStrip1
    // 
    this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
    this.toolStripStatusLabel1});
    this.statusStrip1.Location = new System.Drawing.Point(0, 445);
    this.statusStrip1.Name = "statusStrip1";
    this.statusStrip1.Size = new System.Drawing.Size(639, 22);
    this.statusStrip1.TabIndex = 0;
    this.statusStrip1.Text = "statusBar";
    // 
    // toolStripStatusLabel1
    // 
    this.toolStripStatusLabel1.Name = "toolStripStatusLabel1";
    this.toolStripStatusLabel1.Size = new System.Drawing.Size(61, 17);
    this.toolStripStatusLabel1.Text = "Status Bar";
    // 
    // TreeDDC
    // 
    this.TreeDDC.Dock = System.Windows.Forms.DockStyle.Left;
    this.TreeDDC.Location = new System.Drawing.Point(0, 0);
    this.TreeDDC.Name = "TreeDDC";
    this.TreeDDC.Size = new System.Drawing.Size(97, 445);
    this.TreeDDC.TabIndex = 1;
    // 
    // BtnPointCtrl
    // 
    this.BtnPointCtrl.Location = new System.Drawing.Point(28, 93);
    this.BtnPointCtrl.Name = "BtnPointCtrl";
    this.BtnPointCtrl.Size = new System.Drawing.Size(202, 86);
    this.BtnPointCtrl.TabIndex = 2;
    this.BtnPointCtrl.Text = "???";
    this.BtnPointCtrl.UseVisualStyleBackColor = true;
    // 
    // BtnLogic
    // 
    this.BtnLogic.Location = new System.Drawing.Point(28, 282);
    this.BtnLogic.Name = "BtnLogic";
    this.BtnLogic.Size = new System.Drawing.Size(202, 86);
    this.BtnLogic.TabIndex = 4;
    this.BtnLogic.Text = "??";
    this.BtnLogic.UseVisualStyleBackColor = true;
    // 
    // BtnComm
    // 
    this.BtnComm.Location = new System.Drawing.Point(307, 93);
    this.BtnComm.Name = "BtnComm";
    this.BtnComm.Size = new System.Drawing.Size(202, 86);
    this.BtnComm.TabIndex = 3;
    this.BtnComm.Text = "??";
    this.BtnComm.UseVisualStyleBackColor = true;
    // 
    // BtnSystem
    // 
    this.BtnSystem.Location = new System.Drawing.Point(307, 282);
    this.BtnSystem.Name = "BtnSystem";
    this.BtnSystem.Size = new System.Drawing.Size(202, 86);
    this.BtnSystem.TabIndex = 5;
    this.BtnSystem.Text = "???";
    this.BtnSystem.UseVisualStyleBackColor = true;
    // 
    // panel1
    // 
    this.panel1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
    this.panel1.Controls.Add(this.BtnSystem);
    this.panel1.Controls.Add(this.BtnComm);
    this.panel1.Controls.Add(this.BtnPointCtrl);
    this.panel1.Controls.Add(this.BtnLogic);
    this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
    this.panel1.Location = new System.Drawing.Point(97, 0);
    this.panel1.Name = "panel1";
    this.panel1.Size = new System.Drawing.Size(542, 445);
    this.panel1.TabIndex = 6;
    // 
    // MainForm
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(639, 467);
    this.Controls.Add(this.panel1);
    this.Controls.Add(this.TreeDDC);
    this.Controls.Add(this.statusStrip1);
    this.Name = "MainForm";
    this.Text = "MainForm";
    this.statusStrip1.ResumeLayout(false);
    this.statusStrip1.PerformLayout();
    this.panel1.ResumeLayout(false);
    this.ResumeLayout(false);
    this.PerformLayout();

}

しかし、私は興味のある唯一のコードは次のようになると信じています:

this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;


this.panel1.Controls.Add(this.BtnSystem);
this.panel1.Controls.Add(this.BtnComm);
this.panel1.Controls.Add(this.BtnPointCtrl);
this.panel1.Controls.Add(this.BtnLogic);

どんな助けでも大歓迎です。

4

3 に答える 3

4

ボタンのAnchorプロパティを使用します...

アンカーとドッキングの操作

パネル自体は、サイズ変更時にコントロールを再配置しませんAnchor (Top, Bottom, Left, Right)。親パネルのサイズ変更時にコントロールが再配置されるプロパティを使用します...

またはTableLayOutPanelを使用します。

于 2012-06-15T04:59:08.313 に答える
3

パネルをドッキングすると、パネルのサイズが変更されるだけで、パネル内のコントロールは再配置されません。コンテナーのサイズ変更後にコンテナー内の要素の位置を変更するには、Anchorプロパティを調べます。TableLayoutPanelその名前が示すように、テーブル形式でコントロールをレイアウトできるものもあります。

于 2012-06-15T04:57:17.253 に答える
0

パネル内に FlowLayoutPanel をドッキングし、その FlowLayoutPanel 内にボタンを配置してください。レイアウト方向プロパティを設定します。メイン ウィンドウのサイズを変更すると、ボタンのサイズも変更されます。

于 2012-06-15T05:20:47.150 に答える