我正在用C#编写一个Visual Studio扩展程序,希望根据时间更改颜色主题(日落后应用暗色主题,日出时根据用户的喜好应用蓝色/亮色主题)。
我能够使用由ShellSettingsManager
对象公开的WriteableSettingsStore
更改颜色主题。当我执行以下代码时,主题会在重新启动Visual Studio后更改。
var settingsManager = new ShellSettingsManager(this);
var writeableUserStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);
writeableUserStore.SetString("General", "CurrentTheme", GuidList.guidDarkTheme);
我希望主题能够自动更新——我曾尝试使用User32 API中的UpdateWindow
和RedrawWindow
函数,但窗口并没有重新加载。
那么问题来了——在更改注册表中的CurrentTheme属性后,如何“重绘”Visual Studio?