疑似コードを許してください、しかしそれは簡単な質問です:
マークアップにテキスト ボックス (id = "txtbox") を含むユーザー コントロール (myControlBase : UserControl) を作成します。その分離コードで、メソッド SayHello(string s){ txtbox.Text = s; を記述します。}。
myControlBase (myControl : myControlBase) を拡張する別のユーザー コントロールを作成します。この子コントロールの page_load で、SayHello("hello"); を呼び出します。txtbox が null であることを知らせる実行時エラーを受け取ります (明らかにまだ作成されていません)。
では、ユーザー コントロールから継承し、子コントロールがベース コントロールのマークアップにアクセスできるようにするにはどうすればよいでしょうか。これらのコントロールのイベント ライフサイクルについて調べてみましたが、理解できていないようです。
何か案は?
-編集-
すみません、ASP.Netです。このコードでより明確になったとしたら、問題の説明がかなり不十分だったに違いありません。
txtBox は、myControlBase のマークアップに存在する ASP:Textbox コントロールです。
public partial class myControlBase : System.Web.UI.UserControl
{
protected void SayHello(string s){
txtBox.Text = s;
}
}
public partial class myControl: myControlBase
{
protected void Page_Load(object sender, EventArgs e)
{
SayHello("hello");
}
}
これは SayHello("hello"); で失敗します。txtBox が Null を返したためです。