自定义控件组件设置位置C#
我有自定义控件-使用Win窗体,它包含四个文本框,所有这些文本框都有属性来关闭或打开-我只是在它们上设置visible参数。 我想更改自定义控件的大小和位置-例如,当我关闭第一个文本框时,我想更改他下面所有3个组件的位置,使它们更高。 当然,我想使用每个文本框-每个文本框,在我改变位置的文本框下面,应该改变位置 我无法通过改变TextBox在其自身属性中的位置来实现这一点-我可以在我的上方询问TextBox,如果其属性设置为on或of,但它不起作用,因为我不知道在应用程序中设置属性的顺序 我可以改变我下面的文本框的位置-在Top TextBox的属性中,但我只能用下面的一个文本框来改变位置,我不知道,也无法找到,如果下面的两个文本框没有关闭,第四个文本框应该在第二个位置 我不能用一些变量来改变它——当我改变它时,其他的文本框并不关心它,而且它们以前已经设置了它们的位置自定义控件组件设置位置C#,c#,winforms,custom-controls,positioning,C#,Winforms,Custom Controls,Positioning,我有自定义控件-使用Win窗体,它包含四个文本框,所有这些文本框都有属性来关闭或打开-我只是在它们上设置visible参数。 我想更改自定义控件的大小和位置-例如,当我关闭第一个文本框时,我想更改他下面所有3个组件的位置,使它们更高。 当然,我想使用每个文本框-每个文本框,在我改变位置的文本框下面,应该改变位置 我无法通过改变TextBox在其自身属性中的位置来实现这一点-我可以在我的上方询问TextBox,如果其属性设置为on或of,但它不起作用,因为我不知道在应用程序中设置属性的顺序 我可以
那么你知道我如何实现它吗?FlowLayoutPanel正是为这种行为而设计的。将文本框放置在FlowLayoutPanel中,然后当您将其中一个或多个文本框的visible属性设置为false时,其他文本框将自动向上移动(如果是这样设置的话,则会向上移动)。如果出于某种原因需要手动执行,只需创建一个控件链即可
public class CustomTextBox
{
public CustomTextBox(CustomTextBox previousSibling)
{
PreviousSibling = previousSibling;
}
public CustomTextBox PreviousSibling { get; private set; }
public CustomTextBox PreviousVisibleSibling
{
get
{
if (PreviousSibling == null)
{
return null;
}
return PreviousSibling.Visible ? PreviousSibling : PreviousSibling.PreviousVisibleSibling
}
}
}您使用的是WPF还是Win表单?对不起,我忘了-我使用的是Win表单。我在第一行使用的是Win表单句子。它将帮助那些愿意帮助你的人。