この問題は、UC2 でカスタム イベントを作成し、メイン ページでそのイベントを使用して UC1 で hide メソッドを呼び出すことで解決できます。
ユーザーコントロールでデリゲートを宣言します
public delegate void HideTextBoxEventHandler(object sender, EventArgs e);
次に、作成したデリゲートのイベントを定義します
public event HideTextBoxEventHandler HideTextBox;
テキスト ボックスを非表示にするコード内のポイントで、そのイベントを呼び出す必要があります。
if (this.HideTextBox != null) // if there is no event handler then it will be null and invoking it will throw an error.
{
EventArgs e = new EventArgs();
this.HideTextBox(this, e);
}
次に、メイン ページからイベント処理メソッドを作成します。
protected void UserControl2_HideTextBox(Object sender, EventArgs e)
{
UC1.InvokeHideTextBox(); // this is the code in UC1 that does the hiding
}
ページの読み込みに追加するか、UC2 を読み込んでいる場所に追加する必要があります。
UC2.HideTextBox += new UserControl2.HideTextBoxEventHandler(this.UserControl2_HideTextBox);