SplitContainerを持つ Windows フォームがあります。このSplitContainerには他のパネルがあります。
Panel1には、というカスタム コントロールInputControl
と というTextBoxDisplay
が含まれています。
現在表示されている項目を確認するために、GetChildIndex メソッドに目を向け、Windows フォームを親として使用しました。
int inputIndex = parent.Controls.GetChildIndex(InputControl);
int displayIndex = parent.Controls.GetChildIndex(Display);
これをコーディングしていたとき、Windows フォームを親として渡すことができるかどうか確信が持てなかったので、後でブレークポイントを設定して、2 つのインデックスが -1 より大きいことを確認しました。
if ((-1 < inputIndex) && (-1 < displayIndex)) {
ただし、最初の整数inputIndex
に値が割り当てられる前に、私の努力に対して次のメッセージとともにArgumentExceptionが与えられました。
「子」は、この親の子コントロールではありません。
OK、これらはこの親の直接の子コントロールではないと思います。
一方、 SplitContainerは確かに直接の子コントロールです。では、 SplitContainerコントロールを検索する必要がありますか?
ただし、技術的には、z-index が必要なコントロールはPanel1コントロールにあります。それは私のコードがこれほど醜く見えなければならないということですか?
int inputIndex = splitControl1.Panel1.Controls.GetChildIndex(InputControl);
int displayIndex = splitControl1.Panel1.Controls.GetChildIndex(Display);
これは、私の 2 つのコントロールの z-index を取得する方法としては非常に役に立たないようです。
どのコントロールが一番上にあるかを追跡するために自分のコードを書く以外に、これを行う簡単な方法はありますか?
コントロールが直接の子コントロールであるか、親の他の子孫であるかに関係なく、任意のコントロールの z-index を返す Microsoft メソッドが必要です。答えは、まず、これを知っている人に授与されます。
それが存在しない場合、再帰ループを作成せずにどのように記述しますか? 既存の Microsoft の方法がない場合、これは授与された回答として機能します。
再帰ループが必要な場合は、最適な再帰ループを示します (場合によっては回答します)。