我为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
感谢您的时间!
答案 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
}