2015-06-26 25 views
0

我一直在寻找并找不到解决方案。MetroStyleManager更改内容的主题,但不是表单的主题

我有一个按钮,我MetroForm和on_click它执行以下操作:

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

我也有一个白色的图像作为背景,我的财产AllowImageInvert设置为True但是当我真正按一下按钮它改变了形式中所有内容的主题,而不是实际形式的主题。

所以,我想加入这一行的代码:

this.Theme = metroStyleManager.Theme; 

,但它似乎总是一个落后。

所以我点击按钮,内容的主题是Dark而表单主题是Light。再次单击将内容的主题更改为Light,表单主题更改为Dark。我把它设置成可以正常工作的示例项目。

有什么建议吗?

谢谢!

+0

我曾经面临过这样的问题。从来没有真正费心去研究它。我最终手动设置了表单的主题。也许这是一个错误?我猜这是怎么回事 –

回答

1

经过数小时的试验和错误,我终于修好了。

希望这可以帮助任何有此问题的人。

我终于将此添加到代码的末尾:

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(); 
} 
+1

它的功能是它不像VS中的普通GUI那样自动刷新。这就是为什么你需要“This.Refresh();” – VargaDev