2012-01-31 8 views
1

多かれ少なかれ同じプロパティを持つ4つのユーザーコントロールを作成しました。ユーザーコントロールのプロパティの値を設定する - C#

<div> 
    <asp:Label runat="server" ID="LabelPrompt"></asp:Label> 
    <telerik:RadComboBox runat="server" ID="ComboBoxInput"></telerik:RadComboBox> 
</div> 

このページが読み込まれると、LabelPromptの値を変更する必要があります。ここで私はやっているものです:

   Control p = LoadControl("~/Parameters/TextBoxParameterUserControl.ascx");      
       p.GetType().GetProperty("LabelPrompt").SetValue(p, "AAAA", null); 
       PanelParametersList.Controls.Add(p); 

は、以前私は、ユーザーコントロールを追加するには、以下のコードを使用しようとしましたが、それはうまくいきませんでした。もう1つのスレッドは、上記のコードを使用することを提案しました。このコードは、ビューにコントロールを追加するという点では機能します。

PanelParametersList.Controls.Add(new TextBoxParameterUserControl()); 

とにかく、コンパイラは次の行で不平を言う:

p.GetType().GetProperty("LabelPrompt").SetValue(p, "AAAA", null); 

しかし、これはdoesnの;トンの仕事、それは私が何をやっている.....「参照に設定されていないオブジェクト」と言います違う?

P.S.私はスーパークラス/サブクラスが可能であることを認識していますが、これは私が後にしていることではありません!

+0

申し訳ありませんが、ユーザーコントロールがaspxページに含まれていませんか? –

答えて

1

は、あなたがこのような何かをしようとしている(と私はあなたが意図的に、実行時にこれらのコントロールをロードしている願っています?):もちろん

TextBoxParameterUserControlic control = LoadControl("~/Parameters/TextBoxParameterUserControl.ascx") as TextBoxParameterUserControl; 
if(control != null) 
{ 
    control.LabelPrompt = "AAAA"; 
    PanelParametersList.Controls.Add(p); 
} 

LabelPromptプロパティはpublicでなければなりません。

関連する問題