Office 2010的外接程序开发 - 我可以从代码隐藏阅读用户使用什么主题? [英] Office 2010 AddIn development - Can I from code-behind read what theme the user is using?
本文介绍了Office 2010的外接程序开发 - 我可以从代码隐藏阅读用户使用什么主题?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
PowerPoint 2010中带有三个默认主题,银色,黑色和蓝色。是否有可能检查用户当前从代码隐藏使用的主题?
PowerPoint 2010 comes with three default themes, silver, black and blue. Is it possible to check which theme the user is currently using from code-behind?
推荐答案
我用这个代码来设置颜色我的接口根据设置什么样的主题。
I use this code to setup colours for my interface depending on what theme is set.
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;
}
}
}
}
这篇关于Office 2010的外接程序开发 - 我可以从代码隐藏阅读用户使用什么主题?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文