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 主题系统对何时可以设置不同的主题信息有限制。可以在 PreInit 期间设置 Theme 属性。但是 StyleSheetTheme 是在编译时处理的,因此不能在像 PreInit 这样的事件中以编程方式覆盖。”

于 2011-01-05T02:18:01.430 回答