Office 2010 AddIn 开发 - 我可以从代码隐藏中读取用户正在使用的主题吗?

2024-04-02

PowerPoint 2010 提供三种默认主题:银色、黑色和蓝色。是否可以从代码隐藏中检查用户当前正在使用哪个主题?


我使用此代码根据设置的主题设置界面的颜色。

public static class LFTheme 
    {
        const int ThemeClassic = 0;
        const int ThemeBlue = 1;
        const int ThemeSilver = 2;
        const int ThemeBlack = 3;

        public static int Theme { get; set; }
        public static Color BackColor { get; set; }
        public static Color ForeColor { get; set; }
        public static Color ForeColorLight { get; set; }
        public static Color ForeColorDark { get; set; }
        public static Color TextColor { get; set; }
        public static System.Drawing.Font Font { get; set; }

        public static Excel.Application ExcelApp { get; set; }
        public static Double ExcelVersion { get; set; }

        static LFTheme()
        {
            InitLook();
        }


     public static void InitLook()
            {
                const string OfficeCommonKey = @"Software\Microsoft\Office\{0:0.0}\Common";
                const string OfficeThemeValueName = "Theme";

                Theme = 0;
                BackColor = System.Windows.Forms.Control.DefaultBackColor;
                ForeColor = System.Drawing.SystemColors.Control;
                ForeColorLight = System.Drawing.SystemColors.ControlLight;
                ForeColorDark = System.Drawing.SystemColors.ControlDark;
                TextColor = System.Drawing.SystemColors.ControlText;
                Font = System.Windows.Forms.Control.DefaultFont;

                if (ExcelVersion<12.0)
                    return;

                using (RegistryKey key = Registry.CurrentUser.OpenSubKey(String.Format(OfficeCommonKey, ExcelVersion), false))
                {
                    try
                    {
                        Theme = (int)key.GetValue(OfficeThemeValueName);
                    }
                    catch (Exception ex)
                    {
                        Theme = ThemeClassic;
                        if (ExcelVersion >= 12.0)
                        {
                            Theme = ThemeBlue;
                        }
                    }

                    switch (Theme)
                    {
                        case ThemeBlue:
                            BackColor = Color.FromArgb(255, 213, 228, 242);
                            ForeColor = Color.FromArgb(255, 107, 160, 209);
                            ForeColorLight = Color.FromArgb(255, 185, 210, 234);
                            ForeColorDark = Color.FromArgb(255, 87, 149, 204);
                            TextColor = Color.FromArgb(255, 50, 108, 160);
                            Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
                            break;

                        case ThemeSilver:
                            BackColor = Color.FromArgb(255, 232, 236, 243);
                            ForeColor = Color.FromArgb(255, 158, 162, 161);
                            ForeColorLight = Color.FromArgb(255, 200, 206, 205);
                            ForeColorDark = Color.FromArgb(255, 128, 133, 131);
                            TextColor = Color.FromArgb(255, 116, 118, 123);
                            Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
                            break;

                        case ThemeBlack:
                            BackColor = Color.FromArgb(255, 83, 83, 83);
                            ForeColor = Color.FromArgb(255, 168, 170, 170);
                            ForeColorLight = Color.FromArgb(255, 188, 190, 190);
                            ForeColorDark = Color.FromArgb(255, 148, 150, 150);
                            TextColor = Color.FromArgb(255, 224, 226, 226);
                            Font = new System.Drawing.Font("Segoe UI", 8F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((System.Byte)(0)));
                            break;

                        default:                    
                            break;
                    }
                }
            }


}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Office 2010 AddIn 开发 - 我可以从代码隐藏中读取用户正在使用的主题吗? 的相关文章

  • 静态只读字符串数组

    我在我的 Web 应用程序中使用静态只读字符串数组 基本上数组有错误代码 我将所有类似的错误代码保存在一个数组中并检查该数组 而不是检查不同常量字符串中的每个错误代码 like public static readonly string m
  • 当我在组合框中选择一个项目时,如何防止 TextChanged 事件?

    我有一个TextChanged http msdn microsoft com en us library system windows forms control textchanged aspx我的事件ComboBox http msd
  • CLR 2.0 与 4.0 性能比较?

    如果在 CLR 4 0 下运行 为 CLR 2 0 编译的 NET 程序会运行得更快吗 应用程序配置
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • 在c#中执行Redis控制台命令

    我需要从 Redis 控制台获取 客户端列表 输出以在我的 C 应用程序中使用 有没有办法使用 ConnectionMultiplexer 执行该命令 或者是否有内置方法可以查找该信息 CLIENT LIST是 服务器 命令 而不是 数据库
  • 查找进程的完整路径

    我已经编写了 C 控制台应用程序 当我启动应用程序时 不使用cmd 我可以看到它列在任务管理器的进程列表中 现在我需要编写另一个应用程序 在其中我需要查找以前的应用程序是否正在运行 我知道应用程序名称和路径 所以我已将管理对象搜索器查询写入
  • File.AppendText 尝试写入错误的位置

    我有一个 C 控制台应用程序 它作为 Windows 任务计划程序中的计划任务运行 此控制台应用程序写入日志文件 该日志文件在调试模式下运行时会创建并写入应用程序文件夹本身内的文件 但是 当它在任务计划程序中运行时 它会抛出一个错误 指出访
  • 告诉 Nancy 将枚举序列化为字符串

    Nancy 默认情况下在生成 JSON 响应时将枚举序列化为整数 我需要将枚举序列化为字符串 有一种方法可以通过创建来自定义 Nancy 的 JSON 序列化JavaScript 原始转换器 https github com NancyFx
  • 为什么可以通过ref参数修改readonly字段?

    考虑 class Foo private readonly string value public Foo Bar ref value private void Bar ref string value value hello world
  • 在 NaN 情况下 to_string() 可以返回什么

    我使用 VS 2012 遇到了非常令人恼火的行为 有时我的浮点数是 NaN auto dbgHelp std to string myFloat dbgHelp最终包含5008角色 你不能发明这个东西 其中大部分为0 最终结果是 0 INF
  • 为什么这个二维指针表示法有效,而另一个则无效[重复]

    这个问题在这里已经有答案了 这里我编写了一段代码来打印 3x3 矩阵的对角线值之和 这里我必须将矩阵传递给函数 矩阵被传递给指针数组 代码可以工作 但问题是我必须编写参数的方式如下 int mat 3 以下导致程序崩溃 int mat 3
  • 打印大型 WPF 用户控件

    我有一个巨大的数据 我想使用 WPF 打印 我发现WPF提供了一个PrintDialog PrintVisual用于打印派生的任何 WPF 控件的方法Visual class PrintVisual只会打印一页 因此我需要缩放控件以适合页面
  • WebBrowser.Print() 等待完成。 。网

    我在 VB NET 中使用 WebBrowser 控件并调用 Print 方法 我正在使用 PDF 打印机进行打印 当调用 Print 时 它不会立即启动 它会等到完成整个子或块的运行代码 我需要确保我正在打印的文件也完整并继续处理该文件
  • 将数组作为参数传递

    如果我们修改作为方法内参数传递的数组的内容 则修改是在参数的副本而不是原始参数上完成的 因此结果不可见 当我们调用具有引用类型参数的方法时 会发生什么过程 这是我想问的代码示例 using System namespace Value Re
  • 实体框架中的“it”是什么

    如果以前有人问过这个问题 请原谅我 但我的任何搜索中都没有出现 它 我有两个数据库表 Person 和 Employee 对每个类型的表进行建模 例如 Employee is a Person 在我的 edmx 设计器中 我定义了一个实体
  • 使用 C 在 OS X 中获取其他进程的 argv

    我想获得其他进程的argv 例如ps 我使用的是在 Intel 或 PowerPC 上运行的 Mac OS X 10 4 11 首先 我阅读了 ps 和 man kvm 的代码 然后编写了一些 C 代码 include
  • 为boost python编译的.so找不到模块

    我正在尝试将 C 代码包装到 python 中 只需一个类即可导出两个函数 我编译为map so 当我尝试时import map得到像噪音一样的错误 Traceback most recent call last File
  • Objective-C / C 给出枚举默认值

    我在某处读到过关于给枚举默认值的内容 如下所示 typedef enum MarketNavigationTypeNone 0 MarketNavigationTypeHeirachy 1 MarketNavigationTypeMarke
  • 如何使用 C++11 using 语法键入定义函数指针?

    我想写这个 typedef void FunctionPtr using using 我该怎么做呢 它具有类似的语法 只不过您从指针中删除了标识符 using FunctionPtr void 这是一个Example http ideone
  • 如何将十六进制字符串转换为无符号长整型?

    我有以下十六进制值 CString str str T FFF000 如何将其转换为unsigned long 您可以使用strtol作用于常规 C 字符串的函数 它使用指定的基数将字符串转换为 long long l strtol str

随机推荐

  • 设置了正确的内容类型,但 .ipa 文件被视为 .zip 文件

    我编写了一个小型 Rails 应用程序 我可以在其中上传三个文件 我需要这些文件来无线分发临时构建 这包括一个 ipa文件 一个 mobileprovisioning文件和一个 plist File 现在的问题是 当我点击链接时 ipa归档
  • 是否可以在 Netbeans 7.0 应用程序中使用 Jzy3D?

    好吧 我们正在尝试将 3D 散点图合并到 Netbeans 7 0 中的项目中 我们选择测试的库之一是 Jzy3D 看起来它会做我们需要它做的一切 但不幸的是 它什么也没做 我已经正确安装了 JOGL 并对其进行了测试 发现它可以正常工作
  • 阻止 FlowType 检查 node_modules 中的错误

    我曾尝试寻找解决方案或解决此问题的方法 但没有成功 以下是描述我的流程安装以及最终我面临的问题的一些步骤 Step 1 我使用创建了一个新的反应本机项目react native init TestProject 我想配置flow http
  • 在 dotnet 新模板中包含“隐藏”文件

    我正在尝试创建一个简单的dotnet new包含我的团队使用的 默认 editorconfig 和 gitconfig 的模板 不幸的是 files 不会被包含在dotnet pack 这是我的 csproj 的一部分
  • SonataAdminBundle表单字段查询

    在 Admin 类的 SonataAdminBundle 中 我无法创建ManyToMany 字段上的 orderBy https github com sonata project SonataAdminBundle issues 328
  • 在 C++ 的 if 语句中使用多个条件

    我正在尝试在 C 中创建一个复杂的 if 语句 这将使我免于编写一大堆 if 语句 我想知道下面的代码是否确实有意义 或者我忽略了一个错误 if input choice cout lt lt Tie lt lt endl else if
  • Flyway Gradle 插件 - 循环依赖

    我有一个使用 gradle flyway gradle 插件 mybatis 生成器和 postgres 的项目 在我的 build gradle 中 我有 compileJava dependsOn myBatisGenerator 我想
  • LinkedIn 集成 r_network 和 w_messages 请求在 iOS sdk 中无法协同工作

    我已经完成了 LinkedIn 集成 并且必须向特定用户发送消息 为此 我首先要获取连接 然后发送消息 void requestTokenFromProvider OAMutableURLRequest request OAMutableU
  • 具有不重叠条目集的两列值的共同出现表

    import pandas as pd 可重复的设置 我有一个数据框 df pd DataFrame from dict A a b b c d d c b B p q p q r r p q ie A B 0 a p 1 b q 2 b
  • 如何编写 T4 模板以从 Entity Framework 6 创建 DTO?

    我有一个大型数据库 我在 Entityframework 中使用数据库优先模型 它位于互联网服务器上并通过 WCF 进行通信 域模型使用所有小写字母来表示实体 存储过程和列 属性的名称 在我的客户端应用程序中 我希望使用标准 PascalC
  • JS 可变变量可以从闭包访问[重复]

    这个问题在这里已经有答案了 所以我的 JS 编译器中有一个警告 但是你能向我解释一下这是否真的会影响我的代码的执行方式吗 for x 0 x lt levels length x var level levels x var candles
  • 通过php代码在xls表中插入图片

    问候 我必须在行 0 列 0 上插入徽标 图像 我为此使用 Spreadsheet Excel Writer 我尝试了它的 insertBitmap 方法 程序工作正常 但不显示位图图像在 xls 工作表上 而不是空白行 可能是什么原因 您
  • 分发预先经过 NGEN 处理的程序集是否有意义?

    我发现了一些关于使用 NGEN 作为安装程序的最后一步的有趣链接这个帖子 https stackoverflow com questions 522323 how do i run ngen at the end of the instal
  • 使用一个套接字创建 2 个流

    我正在尝试创建一个在互联网上运行的多人游戏 问题是我正在尝试获取流上的输入 但由于某种原因我无法使用一个套接字创建 2 个流 我将解释一下 Socket s new Socket 127 0 0 1 5001 ObjectInputStre
  • 如何将 csv 文件导入 MySQL Workbench?

    我有一个 CSV 文件 它包含 140 万行数据 因此我无法在 Excel 中打开该 csv 文件 因为它的限制约为 100 万行 因此 我想在MySQL Workbench中导入这个文件 此 csv 文件包含类似以下的列 Service
  • 如何找到图像中最密集的区域?

    考虑一个黑白图像 例如this http img13 imageshack us img13 7401 10416827 jpg 我想做的是找到白点最密集的区域 在这种情况下 有 20 21 个这样的密集区域 即 点簇构成一个密集区域 谁能
  • 以编程方式确定身份验证模式

    有没有办法以编程方式确定 SharePoint 2007 Web 应用程序是否正在使用表单身份验证 我想一种方法可能是从 web config 中读取它 但我想知道 API 中是否公开了一些属性 看看 admin Authenticatio
  • 尽早停止詹金斯管道作业

    在我们的 Jenkins Pipeline 工作中 我们有几个阶段 我想要的是 如果任何一个阶段失败 那么构建就会停止 而不是继续到进一步的阶段 以下是其中一个阶段的示例 stage Building def result sh retur
  • 核心数据单例管理器?

    有哪些技术原因不创建单例类来管理我的核心数据 我现在正在尝试做出决定 是否应该删除所有样板核心数据代码并在单例中重新实现它 Xcode 模板中的应用程序委托中的样板代码在功能上是作为单例实现的 应用程序对象是一个单例 它只维护一个委托对象
  • Office 2010 AddIn 开发 - 我可以从代码隐藏中读取用户正在使用的主题吗?

    PowerPoint 2010 提供三种默认主题 银色 黑色和蓝色 是否可以从代码隐藏中检查用户当前正在使用哪个主题 我使用此代码根据设置的主题设置界面的颜色 public static class LFTheme const int Th