Winforms动态大小

时间:2013-07-30 09:55:12

标签: c# winforms autosize

我有一个winform,它包含一个tabControl(3个标签,可能更晚)。

在我的两个标签中,我得到了一个listBoxView。

问题是,当我点击fullSize按钮时,tabControl不会改变他的大小。这是一个糟糕的窗口。

如何基于winforms边框大小定义tabControl的动态大小,以及基于tabControl大小的listBoxView的动态大小?

TabControl必须适应表单大小,然后tabControl中的页面必须适应tabControl的大小,然后,页面中的listBox必须适应其页面大小。

以下是表格:

    // 
    // Form1
    // 
    this.AutoScaleDimensions = new System.Drawing.SizeF(8F, 16F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(1313, 614);
    this.Controls.Add(this.tabControl1);
    this.tabControl1.ResumeLayout(false);
    this.tabPage1.ResumeLayout(false);
    this.tabPage1.PerformLayout();
    ((System.ComponentModel.ISupportInitialize)(this.dgCSV)).EndInit();
    this.tabPage2.ResumeLayout(false);
    this.tabPage2.PerformLayout();
    this.ResumeLayout(false);

tabControl与他的一个页面:

 // 
        // tabControl1
        // 
        this.tabControl1.Controls.Add(this.tabPage1);
        this.tabControl1.Controls.Add(this.tabPage2);
        this.tabControl1.Controls.Add(this.tabPage3);
        this.tabControl1.Location = new System.Drawing.Point(13, 13);
        this.tabControl1.Name = "tabControl1";
        this.tabControl1.SelectedIndex = 0;
        this.tabControl1.Size = new System.Drawing.Size(1288, 589);
        this.tabControl1.TabIndex = 0;
    // 
    // tabPage2
    // 
    this.tabPage2.Controls.Add(this.listBoxFiles);
    this.tabPage2.Controls.Add(this.richTextBox1);
    this.tabPage2.Controls.Add(this.buttonBottom);
    this.tabPage2.Controls.Add(this.buttonFront);
    this.tabPage2.Controls.Add(this.buttonDown);
    this.tabPage2.Controls.Add(this.buttonUp);
    this.tabPage2.Controls.Add(this.label2);
    this.tabPage2.Location = new System.Drawing.Point(4, 25);
    this.tabPage2.Name = "tabPage2";
    this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
    this.tabPage2.Size = new System.Drawing.Size(1280, 560);
    this.tabPage2.TabIndex = 1;
    this.tabPage2.UseVisualStyleBackColor = true;

我尝试使用Parent.width,ClientRectangle,ClientSize。

我迷失了所有这些属性,没有人成功......

在trippino回答之后:

实际上,tabControl上的一个停靠栏会调整大小,但我无法在listBoxView上执行此操作,因为其中一个元素只占用了所有页面。

并且Anchor不会调整元素大小,它会重新组织它们以适应页面。

还没有像这样调整大小:

    // 
    // tabControl1
    // 
    this.tabControl1.Controls.Add(this.tabPage1);
    this.tabControl1.Controls.Add(this.tabPage2);
    this.tabControl1.Controls.Add(this.tabPage3);
    this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
    this.tabControl1.Location = new System.Drawing.Point(0, 0);
    this.tabControl1.Name = "tabControl1";
    this.tabControl1.SelectedIndex = 0;
    this.tabControl1.Size = new System.Drawing.Size(1313, 614);
    this.tabControl1.TabIndex = 0; 

    // 
    // listBoxFiles
    // 
    this.listBoxFiles.Anchor = System.Windows.Forms.AnchorStyles.Right;
    this.listBoxFiles.Anchor = System.Windows.Forms.AnchorStyles.Top;
    this.listBoxFiles.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
    this.listBoxFiles.Anchor = System.Windows.Forms.AnchorStyles.Left;
    this.listBoxFiles.FormattingEnabled = true;
    this.listBoxFiles.ItemHeight = 16;
    this.listBoxFiles.Location = new System.Drawing.Point(185, 43);
    this.listBoxFiles.Name = "listBoxFiles";
    this.listBoxFiles.SelectionMode = System.Windows.Forms.SelectionMode.MultiExtended;
    this.listBoxFiles.Size = new System.Drawing.Size(1040, 244);
    this.listBoxFiles.TabIndex = 42;



private void tabPage2_SizeChanged(object sender, EventArgs e)
{
    this.buttonAucun.Location = new System.Drawing.Point(this.buttonAucun.Location.X, this.listBoxFiles.Location.Y + this.listBoxFiles.Height + 10);
    this.progressBar1.Location = new System.Drawing.Point(this.progressBar1.Location.X, this.buttonAucun.Location.Y + this.buttonAucun.Height + 10);
    this.richTextBox1.Location = new System.Drawing.Point(this.richTextBox1.Location.X, this.progressBar1.Location.Y + this.progressBar1.Height + 10);
    this.buttonEnregistrer.Location = new System.Drawing.Point(this.buttonEnregistrer.Location.X, this.richTextBox1.Location.Y + this.richTextBox1.Height + 10);

    }

因为,buttonEnregistrer位于我的tabPage的底部,我也尝试过:

    this.buttonEnregistrer.Location = new System.Drawing.Point(this.buttonEnregistrer.Location.X, this.tabPage2.Height -50);

但他不会重新夺回原来的位置。

谢谢。

1 个答案:

答案 0 :(得分:3)

只需使用Dock的{​​{1}}属性将其设置为tabControl即可。它应该解决你的问题。

MSDN Dock Property reference

讨论后编辑:锚定您必须使用的4个边:

Fill