子窗体无法加载Material Skin皮肤问题求助
解决方案
问题根源分析
代码存在两处关键错误:
- 主窗体创建子窗体时,实例化的是基类
Form而非自定义的banking窗体 - 子窗体构造函数中,
SkinManager.AddFormToManage(Form)传入的是类型而非当前窗体实例
修复步骤
- 修正主窗体按钮点击事件代码
将创建子窗体的代码改为实例化自定义的banking类:
private void materialRaisedButton1_Click_1(object sender, EventArgs e) { banking Banking = new banking(); Banking.ShowDialog(); }
- 修正子窗体构造函数代码
把SkinManager.AddFormToManage(Form)中的Form替换为当前窗体实例this:
public banking() { InitializeComponent(); var SkinManager = MaterialSkin.MaterialSkinManager.Instance; SkinManager.AddFormToManage(this); SkinManager.Theme = MaterialSkin.MaterialSkinManager.Themes.DARK; SkinManager.ColorScheme = new ColorScheme(Primary.DeepOrange800, Primary.Brown900, Primary.DeepOrange500, Accent.LightBlue200, TextShade.WHITE); }
优化建议(可选)
为避免重复设置皮肤参数,可直接复用主窗体的皮肤配置,子窗体构造函数无需重复指定主题和配色,仅需添加当前窗体到皮肤管理器:
public banking() { InitializeComponent(); MaterialSkin.MaterialSkinManager.Instance.AddFormToManage(this); }
此时子窗体会自动继承主窗体已设置好的主题与配色方案。
内容的提问来源于stack exchange,提问作者SSG_Vulcan
相关产品推荐
相关产品推荐

