C# 如何在运行时重新排列WinForms控件?

C# 如何在运行时重新排列WinForms控件?,c#,winforms,C#,Winforms,在我的项目中,我希望在运行时对控件进行排序,比如在DataGridView中,我们将如何使用显示索引对网格中的字段进行排序 在设计阶段,我添加了3个TextBoxs和1个ComboBox,在运行时我想对它们进行排序,例如,首先显示2个TextBoxs,然后显示ComboBox,然后是另一个TextBox 是否可以在运行时重新排列控件?Windows窗体中的每个控件都有一个属性。通过更改以下属性,可以轻松更改控件的位置: textBox1.Location = new Point(10, 50);

在我的项目中,我希望在运行时对控件进行排序,比如在
DataGridView
中,我们将如何使用显示索引对网格中的字段进行排序

在设计阶段,我添加了3个
TextBox
s和1个
ComboBox
,在运行时我想对它们进行排序,例如,首先显示2个
TextBox
s,然后显示
ComboBox
,然后是另一个
TextBox

是否可以在运行时重新排列控件?

Windows窗体中的每个控件都有一个属性。通过更改以下属性,可以轻松更改控件的位置:

textBox1.Location = new Point(10, 50); // Puts the TextBox at coordinates (10,50)
坐标相对于控件容器的左上角(例如表单本身)

在您的情况下,您可以轻松地如下安排控件:

Control[] controls = new Control[] { textBox1, textBox2, comboBox3, textBox3 }; // These are your controls
int left = 20, top = 50; // or any other value
foreach (c in controls)
{
    c.Location = new Point(left, top);
    left += c.Width + 10; // space 10 pixels between controls
}
Windows窗体中的每个窗体都有一个属性。通过更改以下属性,可以轻松更改控件的位置:

textBox1.Location = new Point(10, 50); // Puts the TextBox at coordinates (10,50)
坐标相对于控件容器的左上角(例如表单本身)

在您的情况下,您可以轻松地如下安排控件:

Control[] controls = new Control[] { textBox1, textBox2, comboBox3, textBox3 }; // These are your controls
int left = 20, top = 50; // or any other value
foreach (c in controls)
{
    c.Location = new Point(left, top);
    left += c.Width + 10; // space 10 pixels between controls
}

我认为OP希望控制控件的可见性。听起来他想组织一个三步向导什么的。是的,操纵控件的所有属性是可能的——不过,您需要更清楚地知道您想要实现什么。或者这正是他想要的-我不确定:)在
DataGridView
中的列有一个
DisplayIndex
属性,可以让它们更改在网格中的位置。我想OP需要类似的东西,我想我给了他一个暗示。我想OP是想控制控件的可见性。听起来他想组织一个三步向导什么的。是的,操纵控件的所有属性是可能的——不过,您需要更清楚地知道您想要实现什么。或者这正是他想要的-我不确定:)在
DataGridView
中的列有一个
DisplayIndex
属性,可以让它们更改在网格中的位置。我猜OP需要类似的东西,我想我给了他一个暗示。