[英]Auto positioning controls (without TableLayoutPanel)
這是一個使用計數器跟蹤創建的控件的數量並計算正確的Y位置的簡單示例:
private int counter = 0;
private void button1_Click(object sender, EventArgs e)
{
counter++;
int y = counter * 25;
Label lbl = new Label();
lbl.Text = "Label " + counter.ToString();
lbl.Location = new Point(5, y);
TextBox tb = new TextBox();
tb.Location = new Point(lbl.Bounds.Right + 5, y);
this.Controls.Add(lbl);
this.Controls.Add(tb);
}
您是說要TextBox
根據Label
的寬度左右移動嗎?
private void button2_Click(object sender, EventArgs e) {
int gap1 = textBox1.Left - label1.Right;
label1.AutoSize = true;
label1.Text = "long long long long long long long long";
textBox1.Left = label1.Right + gap1;
int gap2 = textBox1.Left - label1.Right;
label2.AutoSize = true;
label2.Text = "s";
textBox2.Left = label2.Right + gap2;
}
首先,記錄TextBox
和Label
之間的間隙,然后將AutoSize
設置為true
,然后設置Label
的新內容,最后可以相應地移動TextBox
。
之前:
后:
如果您需要對齊多個TextBox
,或寬度TextBox
為好,這將是比較復雜的,但你可以按照類似的邏輯。
但是,您必須編寫自己的代碼,但不能在“設計”視圖中使用代碼,因為控件的“ Anchor
”位於父容器而非兄弟控件上。 好吧,在Mac上的Xcode
,您可以執行此操作,但是AFAIK Visual Studio
沒有開箱即用的功能。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.