2010-12-01 16 views
0

親ページに動的に読み込まれる子のUserControlがあります。C#の子コントロールから親ページメソッドを呼び出す

ChildControl childcontrol = this.LoadControl("") as ChildControl; 

このchildUserControlの親ページのメソッドの1つを呼び出す必要があります。どうすればいいの?

おかげ

+0

WinForms、WPF、ASP.NET、...? –

+0

ASP.Net私は 'LoadControl'と' Page'から推測しました。 – GenericTypeTea

答えて

0

は、ページの特定のタイプとして、コントロールの親をキャストしてからメソッドを呼び出します。

3

ページにあるメソッドに依存するコントロールを作成しないでください。そのためには、子コントロールからイベントを公開して処理するのが最適です。あなたの子コントロールに次の行を追加します。

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(); 
} 
+0

ええ、確かにそれを行う方法。しかし、技術的には、OPが尋ねたことを行うことができます。 :) –

+1

@Esteban Araya - あなたはすでにその答えを出していたので、それを複製しても意味がありませんでした。しかし、私はむしろ、基本的なデザインルールを制動するのに適した良い実践を奨励する答えを出すだろう。 – GenericTypeTea

関連する問題