2011-07-30 84 views
3

我有自定义控件 - 使用Win窗体,其中包含四个文本框,都有属性来关闭它们 - 我只是设置可见参数。 我想改变自定义控件的大小和位置 - 例如,当我关闭第一个文本框时,我想改变他下面的所有3个组件的位置,以使它们更高。 当然,我想与每个TextBox一起工作 - 每个TextBoxes,TextBox下面我正在改变位置,应该改变位置。自定义控制组件设置位置C#

我无法实现它与它自己的属性中的文本框的位置改变 - 我可以问TextBox在我之上,如果它的属性设置为on或者,但它不工作,因为我不知道设置的顺序财产在申请。

我可以改变TextBox下面的位置 - 在Top文本框的属性中,但是我可以在下面只有一个TextBox的情况下做到这一点,我不知道和无法找到,如果下面的两个TextBoxes没有关闭,第四个TextBox应该处于第二位。

我不能改变它通过使用一些变量 - 当我改变它,其他TextBoxes不关心它,他们已经设置了他们的位置之前。

那么你有什么想法我怎么能实现它?

+1

您是否使用WPF或Windows窗体? –

+0

对不起,我忘记了 - 我正在使用Win Forms –

+0

添加我在第一行中使用Win Form Sentence。它会帮助谁愿意帮助你。 – Sagotharan

回答

5

FlowLayoutPanel专为这种行为而设计。将您的文本框放在FlowLayoutPanel中,然后当您将其中的一个或多个文本框的visible属性设置为false时,其他文本框将自动向上移动(如果已设置它们,则会自动移动)。

+0

是的,多数民众赞成,我不知道它,谢谢 –

0

如果因为某种原因需要手动操作,只需制作一系列控件。

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 
    } 
} 

}