在功能区加载中更改功能区中的按钮

时间:2011-01-14 16:21:15

标签: c# outlook vsto outlook-addin outlook-2007

我为Outlook 2007 AppointmentItem创建了一个自定义功能区。 AppointmentItem可以具有自定义属性。设置自定义属性后,应禁用自定义功能区中的按钮(默认情况下已启用)。

我在自定义功能区中尝试了_Load功能,但仍然启用了该按钮。我可以调试它:字符串已填充,按钮将被禁用,但在前端没有任何反应。

public partial class Ribbon1 {  
[...]  
    private void Ribbon1_Load(object sender, RibbonUIEventArgs e)  
    {  
        if (myCustomProperty != "")  
        {  
            Globals.Ribbons[Globals.ThisAddIn.Application.ActiveInspector()]  
                .Ribbon1.buttonCollaborate.Enabled = false;  
        }  
    }  
    [...]  
}  

我不知道什么是错的,可能Globals.Ribbons[...].Ribbon1不是当前的功能区?或者是否有ribbon_load_finish_method?

我使用了VisualStudio 2010和.Net 3.5

感谢您的时间!

1 个答案:

答案 0 :(得分:0)

为什么要经历所有的严峻考验?我不得不写一些类似的东西(对于邮件项目,而不是约会),需要根据注册表项设置按钮。这是我的方法。我不是说它很完美,但它对我有用。

这是我(草率)代码的片段:

string taglineActive;
OLRegistryAddin buttonSet = new OLRegistryAddin();  // variable for reading the value of the registry key
UpdateBody msgBody = new UpdateBody();  // method for adding/removing tagline from the message

private void Ribbon1_Load(object sender, RibbonUIEventArgs e)
{
    taglineActive = buttonSet.RegCurrentValue();  // retrieve the current registry value

    if (taglineActive == "0")
    {
        // tagline is off for all messages
        ActiveAllMessages.Checked = false; // uncheck "All Messages" button
        ActiveAllMessages.Label = "Inactive - All Messages";  // change the label
        ActiveThisMessage.Visible = false;  // hide the "This Message" button
        ActiveThisMessage.Enabled = false;  // deactivate the "This Message" button
    }
    else if (taglineActive == "1")
    {
        // tagline is on for all messages
        ActiveAllMessages.Checked = true;   // check "All Messages" button
        ActiveAllMessages.Label = "Active - All Messages";  // change the label
        ActiveThisMessage.Visible = true;   // show the "This Message" button
        ActiveThisMessage.Enabled = true;   // activate the "This Message" button
    }