【问题标题】:How to dynamically resize a textbox in C#如何在 C# 中动态调整文本框的大小
【发布时间】:2014-03-10 02:05:08
【问题描述】:

我是 C# 用户界面的新手。我创建了一个窗口,如第一张图片所示。但是,如果用户拖动窗口并使其变大,我希望它使每个 richTextBox 都随之展开,如第二张图所示。例如,使richTextBox4 与窗口大小成正比。任何想法将不胜感激

图片1:

图 2:

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    您可以在表单中添加TableLayoutPanel。默认情况下,此面板有两列和两行。

    然后你为每个单元格添加一个TextBox,并将每个TextBoxDock-Property 设置为Fill

    要做的最后一步是将TableLayoutPanelDock-Property 设置为Fill,或者将TableLayoutPanelAnchor-Property 设置为Left | Right | Bottom | Top。然后您的面板将与表单一起调整大小。

    所有这些步骤都可以由设计师完成。

    【讨论】:

      【解决方案2】:

      使用TableLayoutControl。您可以对该表格的每个单元格进行一个控件。现在,在那张桌子上,你设置:

      Dock: Fill
      Column Width: Percentage or absolute value as per needs
      Row Height: Percentage or absolute value as per needs
      

      在控件上,例如您的文本框,将Dock 设置为Fill

      阅读并尝试。如果您遇到困难,请回来提出问题。

      【讨论】:

      • 如果您为 TableLayoutControl 设置 Dock:Fill,该按钮将位于其顶部或下方。
      • 如果按钮也在 TableLayoutControl 中,则不会。
      【解决方案3】:

      在每个单元格中使用一个文本框的 TableLayoutControl 可以实现相同的结果 然后将每个控件(文本框和表格布局)的锚属性设置为左、上、右和下。

      【讨论】:

        【解决方案4】:

        您可以在设计器中完成。

        使用TableLayoutPanel,并将其Anchor 属性设置为Top,Bottom,Left,Right,并将单元格内的每个 RichtTextBox 设置为DockFill

        this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
                this.button1 = new System.Windows.Forms.Button();
                this.richTextBox1 = new System.Windows.Forms.RichTextBox();
                this.richTextBox2 = new System.Windows.Forms.RichTextBox();
                this.richTextBox3 = new System.Windows.Forms.RichTextBox();
                this.richTextBox4 = new System.Windows.Forms.RichTextBox();
                this.tableLayoutPanel1.SuspendLayout();
                this.SuspendLayout();
                // 
                // tableLayoutPanel1
                // 
                this.tableLayoutPanel1.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.tableLayoutPanel1.ColumnCount = 2;
                this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F)); //this line sets the Column percentage
                this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
                this.tableLayoutPanel1.Controls.Add(this.richTextBox4, 1, 1);
                this.tableLayoutPanel1.Controls.Add(this.richTextBox3, 0, 1);
                this.tableLayoutPanel1.Controls.Add(this.richTextBox2, 1, 0);
                this.tableLayoutPanel1.Controls.Add(this.richTextBox1, 0, 0);
                this.tableLayoutPanel1.Location = new System.Drawing.Point(24, 80);
                this.tableLayoutPanel1.Name = "tableLayoutPanel1";
                this.tableLayoutPanel1.RowCount = 2;
                this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
                this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
                this.tableLayoutPanel1.Size = new System.Drawing.Size(861, 567);
                this.tableLayoutPanel1.TabIndex = 0;
                // 
                // button1
                // 
                this.button1.Location = new System.Drawing.Point(24, 27);
                this.button1.Name = "button1";
                this.button1.Size = new System.Drawing.Size(137, 47);
                this.button1.TabIndex = 0;
                this.button1.Text = "button1";
                this.button1.UseVisualStyleBackColor = true;
                this.button1.Click += new System.EventHandler(this.button1_Click);
                // 
                // richTextBox1
                // 
                this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill;
                this.richTextBox1.Location = new System.Drawing.Point(3, 3);
                this.richTextBox1.Name = "richTextBox1";
                this.richTextBox1.Size = new System.Drawing.Size(424, 277);
                this.richTextBox1.TabIndex = 0;
                this.richTextBox1.Text = "";
                // 
                // richTextBox2
                // 
                this.richTextBox2.Dock = System.Windows.Forms.DockStyle.Fill;
                this.richTextBox2.Location = new System.Drawing.Point(433, 3);
                this.richTextBox2.Name = "richTextBox2";
                this.richTextBox2.Size = new System.Drawing.Size(425, 277);
                this.richTextBox2.TabIndex = 1;
                this.richTextBox2.Text = "";
                // 
                // richTextBox3
                // 
                this.richTextBox3.Dock = System.Windows.Forms.DockStyle.Fill;
                this.richTextBox3.Location = new System.Drawing.Point(3, 286);
                this.richTextBox3.Name = "richTextBox3";
                this.richTextBox3.Size = new System.Drawing.Size(424, 278);
                this.richTextBox3.TabIndex = 2;
                this.richTextBox3.Text = "";
                // 
                // richTextBox4
                // 
                this.richTextBox4.Dock = System.Windows.Forms.DockStyle.Fill;
                this.richTextBox4.Location = new System.Drawing.Point(433, 286);
                this.richTextBox4.Name = "richTextBox4";
                this.richTextBox4.Size = new System.Drawing.Size(425, 278);
                this.richTextBox4.TabIndex = 3;
                this.richTextBox4.Text = "";
                // 
                // Form1
                // 
                this.AutoScaleDimensions = new System.Drawing.SizeF(12F, 25F);
                this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
                this.ClientSize = new System.Drawing.Size(922, 659);
                this.Controls.Add(this.button1);
                this.Controls.Add(this.tableLayoutPanel1);
                this.Name = "Form1";
                this.Text = "Form1";
                this.tableLayoutPanel1.ResumeLayout(false);
                this.ResumeLayout(false);
        

        【讨论】:

          猜你喜欢
          • 2020-03-03
          • 2018-07-14
          • 2018-11-17
          • 2019-08-28
          • 2010-09-21
          • 1970-01-01
          • 2016-09-27
          • 1970-01-01
          • 2021-01-17
          相关资源
          最近更新 更多