C# 如何设置标签控件的前景色以匹配选定的outlook主题?

C# 如何设置标签控件的前景色以匹配选定的outlook主题?,c#,.net,outlook,vsto,outlook-2010,C#,.net,Outlook,Vsto,Outlook 2010,如何在为Outlook 2010开发的自定义表单区域中设置标签的颜色,以匹配用户选择的主题颜色?请看下面的图片,了解我正在尝试做什么 我正在尝试将自定义表单标签forecolor与Outlook实例的选定主题forecolor匹配 我相信,如果您访问标签的SetForeColor属性或您拥有的内容,您可以执行以下操作: label1.SetForeColor(SystemColors.Highlight); 另见: SystemColors.ActiveBorder SystemColors

如何在为Outlook 2010开发的自定义表单区域中设置标签的颜色,以匹配用户选择的主题颜色?请看下面的图片,了解我正在尝试做什么

我正在尝试将自定义表单标签forecolor与Outlook实例的选定主题forecolor匹配


我相信,如果您访问标签的SetForeColor属性或您拥有的内容,您可以执行以下操作:

label1.SetForeColor(SystemColors.Highlight);

另见:

SystemColors.ActiveBorder
SystemColors.ActiveCaption
SystemColors.ActiveTextCaption
据我所知(我可能错了),Outlook的主题是从Windows获取的(除非你指的是电子邮件或固定主题。我会尝试这种方法

更新:查看更多信息,我看到如果您进入电子邮件,然后点击Office按钮->编辑器选项->主题,您可以在3个默认主题(蓝色、黑色和银色)之间进行选择,但我在注册表中看到的唯一更新是位于以下位置的键:

HKCU\Software\Microsoft\Office\12.0\Common\Theme

我使用的是Office 2007。糟糕的是,它只是插入了一个十六进制数,似乎与主题相对应,但我不知道在哪里可以找到这方面的映射。

在Mike的帖子上展开

此注册表项 HKCU\Software\Microsoft\Office\12.0\Common\Theme

只有三种选择

值1和2为黑色,值3为白色表示前景

银色主题和蓝色主题使用黑色前景。
黑色主题使用白色,黑色主题的值为3

我最终通过在formregion级别实现Paint事件解决了这个问题

private void FormRegion1_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
    if (controlX.BackColor.ToArgb() == System.Drawing.Color.FromArgb(255, 0, 0, 0).ToArgb())
    {
        controlX.ForeColor = System.Drawing.Color.White;
    }
    else if (controlX.BackColor.ToArgb() == System.Drawing.Color.FromArgb(255, 255, 255, 255).ToArgb())
    {
        controlX.ForeColor = System.Drawing.Color.DarkGray;
    }
}

谢谢你的回复。我试过了,但它只拉了窗口高亮颜色(在我的例子中是“蓝色”),这不是我所需要的。我想迈克的帖子有答案,但我想知道我是否真的需要阅读注册表键来找出前景色?