winforms 位置在一个表单不同的位置在一个选项卡框,我怎么能修复它?

k3fezbri  于 2023-10-23  发布在  其他
关注(0)|答案(1)|浏览(156)

我有一个按钮和textBox1,它们位于一个tabPage。我希望每一个按钮上点击创建textBox2,3,4等',位于比上一个按钮低一点。
我怎么能这么做呢?
我尝试创建一个textBox,但由于某种原因,textBox1的位置与属性中的“Location”不同。
下面是创建文本框的代码:

private void button2_Click(object sender, EventArgs e) { 
    TextBox textBox = new TextBox(); 
    textBox.Location = new Point(textBox1.Location.X, textBox1.Location.Y + 10); 
    tabPage1.Controls.Add(textBox); 
}
rkue9o1l

rkue9o1l1#

这段代码有两个主要问题。首先,您没有考虑上一个文本框的高度,这可能会导致控件重叠,如您在附件中看到的:

其次,在代码中只引用textBox1,这意味着所有文本框都将显示在同一位置。
下面是代码的固定版本

private TextBox? lastCreatedTextbox;

private void button2_Click(object sender, EventArgs e)
{
    // assign textBox1 if lastCreatedTextbox is null
    lastCreatedTextbox ??= textBox1;

    var textBox = new TextBox();
    {
        textBox.Location = new Point(lastCreatedTextbox.Location.X, lastCreatedTextbox.Location.Y + lastCreatedTextbox.Height + 10);
    };
    // don't forget to assign lastCreatedTextbox!
    lastCreatedTextbox = textBox;

    tabPage1.Controls.Add(textBox);
}

它看起来像这样:

相关问题