我正在这样的页面的代码隐藏中创建一个文本框:
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页面中声明控件它可以正常工作,但如果我尝试以编程方式执行它不起作用。
答案 0 :(得分: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);
}
答案 1 :(得分:1)
如果将代码放在OnPreInit事件中会有帮助吗?您可能需要稍后将其添加到占位符,但您可以在那里创建控件。
答案 2 :(得分:0)
“ASP.NET主题系统对何时可以设置不同的主题信息有限制。可以在PreInit期间设置Theme属性。但是StyleSheetTheme在编译时处理,因此无法在PreInit等事件中以编程方式覆盖。” / p>