Markust と Antonio の回答で説明されているように、再帰アルゴリズムを使用して検索できますが、この場合は機能します。ただし、いくつかの問題があります。たとえば、ページに usercontrol のインスタンスが 2 つある場合は機能しません。
ただし、より大きな問題は、ユーザーコントロールが提供するカプセル化を壊していることです。含まれているページは、ユーザーコントロールに、たとえば「txtSearchCriteria」という名前のテキストボックスや「btnSearch」という名前のボタンが含まれていることを認識してはなりません。(または<div>
名前付きの「検索」) 含まれているページは、ユーザー コントロールが公開しているインターフェイスを使用して、ユーザー コントロールでのみ動作する必要があります。
ユーザーコントロールにプロパティ (またはプロパティのセット) を作成して、消費者が期待どおりにコントロールを操作できるようにすることをお勧めします。例えば:
Public Boolean SearchControlsVisible
{
get { return search.Visible; }
set { search.Visible = value; }
}
<div>
ページにユーザーコントロールのインスタンスが複数ある場合でも、プロパティのコードはあいまいさなしに「検索」にアクセスできます。この方法では、ページにコントロールを配置するときに ASPX マークアップでこれらのプロパティを設定することもできます。
<my:ContactSearchPanel ID="contactSearch runat="server"
SearchControlsVisible="false"
...etc... />
あなたの質問にはありませんが、ユーザーコントロールで発生するイベントにも応答する必要があります。ユーザー コントロールからイベントを発生させる手順については、次のページを参照してください: http://msdn.microsoft.com/en-us/library/wkzf914z(v=vs.71).aspx
イベントを作成して公開したら、次のようにマークアップにハンドラーをアタッチできます。
<my:ContactSearchPanel ID="contactSearch runat="server"
SearchControlsVisible="false"
OnSearchClicked="SearchPanel_SearchClicked"
...etc... />