我已经设置了一些拆分容器,并且面板大约是文本框和标签的高度。我希望标签留在文本框中,文本框的宽度基本上会转到面板的边缘(如向右拉伸)。
使用flowlayoutpanel或tablepanel或其他方法有一种简单的方法吗?我正在以编程方式添加控件(不使用表单编辑器)。
理想情况下,如果面板增长,文本框应该拉伸。
答案 0 :(得分:0)
您可能想要做的是根据面板尺寸计算标签和文本框的宽度和高度。
对于位置,您可能只需要给它们一个硬编码的起始位置,但同样,这可能是基于某些计算。
如果他们被放置在tablelayoutpanel中的面板中,那么如果表单/容器控制器增长,他们应该自动调整自己的大小,但是为了确保你可以使用anchor属性来确保这一点。
例如,将面板停靠在tablelayoutpanel单元格中的填充模式,然后假设您在左侧有标签,右侧是文本框,将标签左侧固定,文本框右侧。这应该确保控制器的这些边缘保持粘在这些侧面上的面板上。
答案 1 :(得分:0)
当您偏离表单设计器视图时,您的代码会稍微具体一些。当您使用设计器时,您可以通过拖放来实现这样的功能。但是为了在代码中执行此类操作,您可以执行以下操作:
private void InitializeComponent()
{
this.panel1 = new System.Windows.Forms.Panel();
this.label1 = new System.Windows.Forms.Label();
this.textBox1 = new System.Windows.Forms.TextBox();
this.panel1.SuspendLayout();
this.SuspendLayout();
//
// panel1
//
this.panel1.Controls.Add(this.textBox1);
this.panel1.Controls.Add(this.label1);
this.panel1.Location = new System.Drawing.Point(12, 12);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(400, 358);
this.panel1.TabIndex = 0;
this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);
//
// label1
//
this.label1.AutoSize = true;
this.label1.Dock = System.Windows.Forms.DockStyle.Left;
this.label1.Location = new System.Drawing.Point(0, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(35, 13);
this.label1.TabIndex = 0;
this.label1.Text = "label1";
//
// textBox1
//
this.textBox1.Dock = System.Windows.Forms.DockStyle.Right;
this.textBox1.Location = new System.Drawing.Point(47, 0);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(353, 20);
this.textBox1.TabIndex = 1;
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
//
// Form1
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(424, 382);
this.Controls.Add(this.panel1);
this.Name = "Form1";
this.Text = "Form1";
this.Load += new System.EventHandler(this.Form1_Load);
this.panel1.ResumeLayout(false);
this.panel1.PerformLayout();
this.ResumeLayout(false);
}
正如您在运行时所看到的那样,组件已初始化;然后为所有属性分配正确的定位。您是否相对于表单和面板标记了布局。通过定义点,您可以确保它们集中。
这应该让你开始;但绝不是理想的。您可能需要以不同方式配置此类项目以确保其符合您的条件。但是 Form 的格式为440 x 420像素。小组还停靠在整个布局的半英寸范围内。您的文本框和标签将锚定在屏幕的左上角和右上角。
请记住,如果您最大化此布局,它可能会以不利的方式调整设计,除非它们被锁定到这些特定位置。希望这会有所帮助。