2011-07-30 83 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 
    } 
} 

}