親ページに動的に読み込まれる子のUserControlがあります。C#の子コントロールから親ページメソッドを呼び出す
ChildControl childcontrol = this.LoadControl("") as ChildControl;
このchildUserControlの親ページのメソッドの1つを呼び出す必要があります。どうすればいいの?
おかげ
親ページに動的に読み込まれる子のUserControlがあります。C#の子コントロールから親ページメソッドを呼び出す
ChildControl childcontrol = this.LoadControl("") as ChildControl;
このchildUserControlの親ページのメソッドの1つを呼び出す必要があります。どうすればいいの?
おかげ
は、ページの特定のタイプとして、コントロールの親をキャストしてからメソッドを呼び出します。
ページにあるメソッドに依存するコントロールを作成しないでください。そのためには、子コントロールからイベントを公開して処理するのが最適です。あなたの子コントロールに次の行を追加します。
public event OnSomethingHandler Something;
public delegate void OnSomethingHandler(ChildControl sender);
次に、あなたが問題のページの方法を起動したい場合、イベントをオフに火災:
public void FireParentMethod()
{
if (Something != null)
{
Something(this);
}
}
すべてを行う必要がでイベントを処理しています(次のようにマークアップまたはコードで)ページ:
childUserControl.Something+=
new ChildControl.OnSomethingHandler(ChildControl_OnSomething);
そして背後にあるコードにハンドラを追加します。
protected void ChildControl_OnSomething(ChildControl sender)
{
FirePageMethod();
}
ええ、確かにそれを行う方法。しかし、技術的には、OPが尋ねたことを行うことができます。 :) –
@Esteban Araya - あなたはすでにその答えを出していたので、それを複製しても意味がありませんでした。しかし、私はむしろ、基本的なデザインルールを制動するのに適した良い実践を奨励する答えを出すだろう。 – GenericTypeTea
WinForms、WPF、ASP.NET、...? –
ASP.Net私は 'LoadControl'と' Page'から推測しました。 – GenericTypeTea