5

次のようなページの背後にあるコードボックスにテキストボックスを作成しています。

protected override void OnInit(EventArgs e)
{  
      base.OnInit(e);
      TextBox test = new TextBox();
      test.SkinkId = "MySkin";
      placeHolder.Controls.Add(test);
} 

そして私のスキンファイルにはこれがあります:

<asp:TextBox
    runat="server"
    SkinId = "MySkin"
    Width="400"
/>

皮膚がコントロールに適用されていないのはなぜですか。aspxページでコントロールを宣言すると機能しますが、プログラムで実行しようとすると機能しません。

4

3 に答える 3

6

私はこれが古いスレッドであることを知っています。しかし、私は同じような状況で私がしなければならなかったことを共有したいと思います。コントロールを作成した後、ApplyStyleSheetSkin(this)を使用するのに役立ちました。

protected override void OnInit(EventArgs e)
{  
    base.OnInit(e);

    TextBox test = new TextBox();
    test.SkinkId = "MySkin";
    test.ApplyStyleSheetSkin(this); // <--
    placeHolder.Controls.Add(test);
}
于 2013-02-25T14:13:19.307 に答える
1

コードをOnPreInitイベントに配置すると役に立ちますか?後でプレースホルダーに追加する必要があるかもしれませんが、そこでコントロールを作成することができます。

于 2010-05-13T07:54:01.950 に答える
0

答えはここにあります: https ://connect.microsoft.com/VisualStudio/feedback/details/558947/apply-skin-to-a-control-created-programatically

「ASP.NETテーマシステムには、さまざまなテーマ情報を設定できるタイミングに制限があります。ThemeプロパティはPreInit中に設定できます。ただし、StyleSheetThemeはコンパイル時に処理されるため、PreInitのようなイベントでプログラムでオーバーライドすることはできません。」

于 2011-01-05T02:18:01.430 に答える