MetroStyleManager更改内容';主题而不是形式';的主题

本文关键字:MetroStyleManager | 更新日期: 2023-09-27 17:59:52

我到处找都找不到解决方案。

我的MetroForm中有一个按钮,点击后会执行以下操作:

metroStyleManager.Theme = metroStyleManager.Theme == MetroThemeStyle.Light ? MetroThemeStyle.Dark : MetroThemeStyle.Light;

我还有一个白色图像作为背景,属性AllowImageInvert设置为True,但当我实际单击按钮时,它会更改表单中所有内容的主题,但不会更改实际表单的主题。

所以我试着添加这行代码:

this.Theme = metroStyleManager.Theme;

但它似乎总是落后一个。

所以我点击按钮,内容的主题是Dark,而表单的主题是Light。再次单击会将内容的主题更改为Light,并且表单主题更改为Dark。我把它设置得和示例项目一样,效果很好。

有什么建议吗?

谢谢!

MetroStyleManager更改内容';主题而不是形式';的主题

经过数小时的尝试和错误,我终于修复了它。

希望这能帮助到其他有这个问题的人。

我最后把这个添加到代码的末尾:

this.Refresh();

所以最后的代码看起来是这样的:

private void mtleSwitchTheme_Click(object sender, EventArgs e)
{
    metroStyleManager.Theme = metroStyleManager.Theme == MetroThemeStyle.Light ? MetroThemeStyle.Dark : MetroThemeStyle.Light;
    this.Theme = metroStyleManager.Theme;
    this.Refresh();
}