5

tabControl(3つのタブ、おそらく後でもっと)を含むwinformを作成しました。

2 つのタブで、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);

そして、彼のページの 1 つを含む 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 のドックは彼のサイズを変更しますが、要素の 1 つがページ全体を占有するため、listBoxView ではできません。

また、アンカーは要素のサイズを変更しません。ページに収まるように要素を再編成します。

まだこのようにサイズ変更していません:

    // 
    // 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 は私のタブページの一番下にあるので、私も試しました:

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

しかし、彼は元の場所を取り戻すつもりはありません。

ありがとうございました。

4

1 に答える 1

4

に設定するDockプロパティを使用するだけです。それはあなたの問題を解決するはずです。tabControlFill

MSDNDockプロパティ リファレンス

ディスカッション後に編集: 使用する必要がある 4 つの側面を固定するには:

this.listBoxFiles.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)));
于 2013-07-30T09:56:44.497 に答える