Office Powerpoint功能区菜单项访问?

时间:2014-03-17 15:16:24

标签: .net c#-4.0 powerpoint powerpoint-vba

是否可以从Powerpoint幻灯片中访问功能区菜单项? 例如,我在功能区菜单下有一个复选框。现在我希望当我点击一个形状时,应该检查这个复选框吗?

问题似乎很容易,但我找不到办法。你有什么主意吗? (更喜欢C#)

enter image description here

使用CODE编辑

自定义功能区菜单


public partial class RibbonMenu
{
        private void RibbonMenu_Load(object sender, RibbonUIEventArgs e)
        {

        }

        public void ChangeCheckBox()
        {
              System.Windows.Forms.MessageBox.Show("The CheckBox is changed");
              this.checkBox.Checked = true;
              this.checkBox.Label = "AAAAAAA"
        }

}

抓住选择事件


public partial class ThisAddIn
{
        private RibbonMenu menu;

        private void ThisAddIn_Startup(object sender, System.EventArgs e)
        {
            CreateRibbonExtensibilityObject();
            Application.WindowSelectionChange   += new PowerPoint.EApplication_WindowSelectionChangeEventHandler(Application_WindowSelectionChange);

        }

        protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
        {
            this.menu = new RibbonMenu();

            return Globals.Factory.GetRibbonFactory().CreateRibbonManager(new Microsoft.Office.Tools.Ribbon.IRibbonExtension[]
             {
                  this.menu                  
             });
        }

        private void Application_WindowSelectionChange(PowerPoint.Selection Sel)
        {
            //.... Check if the selection is a shape's selection
            this.menu.ChangeCheckBox();         
        }
}

结果是消息框" CheckBox已更改" "出现了,但没有选中复选框,标签也没有更改为" AAAAAA"

2 个答案:

答案 0 :(得分:3)

使用Globals访问Office功能区菜单项,如下所示:


private void Access_All_Ribbons_Globals()
{
    Globals.Ribbons.Ribbon1.comboBox1.Text = "Hello World";
}

答案 1 :(得分:0)

我认为你必须使用Application.WindowSelectionChange事件。

根据MSDN

  

在活动文档窗口中选择文本,形状或幻灯片时发生更改,无论是在用户界面还是代码中。

它将为您提供一个Selection对象,您可以进一步使用它。

事件处理程序的签名:

void (Microsoft.Office.Interop.PowerPoint.Selection selection)