2011-07-30 19 views
3

カスタムコントロールがあります - 4つのテキストボックスを含むWinフォームを使用して、すべてのプロパティをオフまたはオンにするプロパティがあります。 カスタムコントロールのサイズと位置を変更したいと思います。たとえば、最初のテキストボックスをオフにすると、彼の下にある3つのコンポーネントすべての位置を変更して、それらを高くしたいとします。 もちろん、私はすべてのTextBoxで作業したいと思います。すべてのTextBoxes、TextBoxの下で私は位置を変更していますが、位置を変更する必要があります。カスタムコントロールコンポーネントの設定位置C#

独自のプロパティでTextBoxの位置を変更することでそれを達成できません - プロパティの設定がオンまたはオフの場合は、TextBoxを私の上に尋ねることはできますが、設定の順序はわかりませんアプリケーションのプロパティ。

上のテキストボックスのプロパティで、下のTextBoxの位置を変更することはできますが、下の1つのテキストボックスでのみ行うことができます。下にある2つのテキストボックスがオフでなく、秒の位置にある。

変数を使用して変更することはできません。変更すると、他のテキストボックスは気にせず、前に位置を設定しています。

どのように達成できますか?

+1

あなたは、WPFやウィンフォームを使用していますか? –

+0

申し訳ありません - 私はWinフォームを使用しています。 –

+0

最初の行にWinフォーム文を使用していますを追加してください。それはあなたを助けるのが好きな人を助けます。 – Sagotharan

答えて

5

FlowLayoutPanelは、このような振る舞いに対応するように設計されています。テキストボックスをFlowLayoutPanelの中​​に置き、1つ以上の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 
    } 
} 

}

関連する問題