在Visual Studio扩展中更改“颜色主题”

卡梅伦·威尔比(Cameron Wilby)

我正在用C#编写Visual Studio扩展,希望根据一天中的时间更改颜色主题(日落之后将应用深色主题-日出时根据用户的喜好应用蓝色/浅色主题)。

我可以使用对象WriteableSettingsStore暴露的颜色来更改颜色主题ShellSettingsManager当我执行以下代码时,主题将在重新启动Visual Studio之后发生变化。

var settingsManager = new ShellSettingsManager(this);
var writeableUserStore = settingsManager.GetWritableSettingsStore(SettingsScope.UserSettings);

writeableUserStore.SetString("General", "CurrentTheme", GuidList.guidDarkTheme);

我希望自动更新主题-我尝试使用User32 APIUpdateWindowRedrawWindow功能,但不会重新加载窗口。

因此,问题是-更改注册表中的CurrentTheme属性后,如何“重绘” Visual Studio?

哈迪·布雷斯

ShellSettingsManager使您只能在Windows注册表中访问和修改Visual Studio设置。在重新启动之前,Visual Studio将不会对您进行的任何更改,因为VS仅在启动时才从注册表读取设置。因此,这是错误的方法。

为了既改变设置,无需重启应用它们,你将不得不使用DTE2.Properties在讨论这里以下代码段显示了可以在“环境/常规”页面(可以在其中更改主题)中以编程方式更改的所有设置:

EnvDTE.Properties generalProps = dte2Obj.Properties["Environment", "General"];
for (int i = 1; i <= generalProps.Count; ++i)
{
    System.Diagnostics.Debug.WriteLine(
        generalProps.Item(i).Name + ": " + generalProps.Item(i).Value);
}

在VS2013中,默认情况下,此代码将产生以下输出:

AnimationSpeed: 5
RichClientExperienceOptions: 65535
WindowMenuContainsNItems: 10
CloseButtonActiveTabOnly: True
UseTitleCaseOnMenu: False
AutoAdjustExperience: True
Animations: True
AutohidePinActiveTabOnly: False
ShowStatusBar: True
MRUListContainsNItems: 10

所有这些设置都可以更改,VS将立即应用更改。问题在于,没有可用于更改主题的属性。这就是为什么我认为无法完成的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Visual Studio Code中更改突出显示的文本颜色

如何在Visual Studio代码中更改注释的颜色?

在深色主题上更改Visual Studio 2013摘要标记颜色

Visual Studio,如何更改类的颜色?

通过扩展API在Visual Studio Code中更改光标外观

在Visual Studio分类器扩展中获取主题颜色

使用扩展Visual Studio Code扩展图标主题

Visual Studio 2017颜色主题编辑器

如何在Visual Studio Code中更改标尺的颜色

Visual Studio Team Services更改主题

如何更改差异颜色Visual Studio Code

更改Visual Studio Code颜色主题中的颜色

Visual Studio 2017更改深色主题的背景颜色

Visual Studio代码主题-更改CSS语法错误字体颜色

Visual Studio代码颜色主题无法使用

更改参数名称提示(ReSharper)的Visual Studio 2017主题颜色

Visual Studio扩展项目:如何更改目标Visual Studio版本?

调整颜色以适应Visual Studio的PowerTools扩展

在Visual Studio中更改报表的行颜色

更改构建过程的Visual Studio扩展

如何在Microsoft Visual Studio中获得日晒颜色主题?

将颜色主题从Visual Studio代码移植到Visual Studio

在 Visual Studio Code 中查找主题元素名称以更改其颜色

如何在 Visual Studio 中更改 ProgressBar 颜色?

如何删除 Visual Studio 的默认颜色主题?

更改 Visual Studio Code 的标签栏颜色

如何更改 Visual Studio Code 中用于命令托盘突出显示的主题中的颜色?

无法在 Visual Studio 2019 中更改 Monobehavior 事件的颜色

如何在 Visual Studio Code 扩展中设置颜色