簡體   English   中英

自動定位控件(無TableLayoutPanel)

[英]Auto positioning controls (without TableLayoutPanel)

我的問題在圖片中:

位置

我如何在沒有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;
}

首先,記錄TextBoxLabel之間的間隙,然后將AutoSize設置為true ,然后設置Label的新內容,最后可以相應地移動TextBox

之前:

之前

后:

后

如果您需要對齊多個TextBox ,或寬度TextBox為好,這將是比較復雜的,但你可以按照類似的邏輯。

但是,您必須編寫自己的代碼,但不能在“設計”視圖中使用代碼,因為控件的“ Anchor ”位於父容器而非兄弟控件上。 好吧,在Mac上的Xcode ,您可以執行此操作,但是AFAIK Visual Studio沒有開箱即用的功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM