首先,下载和安装VSTO,这是VS2005开发Office Add-In的扩展。

安装后打开VS2005创建Office Add-In 项目,这里我选择一个Word的Add-in:
Office 2007 Ribbon开发

然后为这个Add-In项目添加一个Ribbon:
Office 2007 Ribbon开发

VS中生成两个文件Ribbon1.cs和Ribbon1.xml,xml文件是对Ribbon描述:
Office 2007 Ribbon开发<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad">
Office 2007 Ribbon开发  
<ribbon>
Office 2007 Ribbon开发    
<tabs>
Office 2007 Ribbon开发      
<tab idMso="TabAddIns">
Office 2007 Ribbon开发        
<group id="MyGroup"
Office 2007 Ribbon开发               label
="My Group">
Office 2007 Ribbon开发          
<toggleButton id="toggleButton1" 
Office 2007 Ribbon开发                        size
="large"
Office 2007 Ribbon开发                        label
="My Button"
Office 2007 Ribbon开发                        screentip
="My Button Screentip"
Office 2007 Ribbon开发                        onAction
="OnToggleButton1" 
Office 2007 Ribbon开发                        imageMso
="HappyFace" />
Office 2007 Ribbon开发        
</group>
Office 2007 Ribbon开发      
</tab>
Office 2007 Ribbon开发    
</tabs>
Office 2007 Ribbon开发  
</ribbon>
Office 2007 Ribbon开发
</customUI>

这个文件产生的效果是这样的:Office 2007 Ribbon开发

将Ribbon1.cs文件中的这段代码取消注释:
Office 2007 Ribbon开发    public partial class ThisAddIn
    }

按F5即可打开Word2007并运行这个AddIn。再看xml文件就明白了,一个Tab下面一个Group,Group中一个toggle button,当然也可以存在多个Tab,Tab下也可以有多个Group,一个Group下也可以存在多个控件,只要在这个xml文件中进行描述就可以了。点击这个按钮会弹出对话框,这个动作是由回调函数OnToggleButton1完成的,相当于Click事件,在Ribbon1.cs文件中可以找到这个函数:
Office 2007 Ribbon开发        public void OnToggleButton1(Office.IRibbonControl control, bool isPressed)
        }
Xml文件中
Office 2007 Ribbon开发onAction="OnToggleButton1"
Office 2007 Ribbon开发
注册了这个回调函数。

另外还有很多其他的控件:
Office 2007 Ribbon开发<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="OnLoad">
Office 2007 Ribbon开发    
<ribbon>
Office 2007 Ribbon开发        
<tabs>
Office 2007 Ribbon开发            
<tab idMso="TabAddIns" label="MyRibbon">
Office 2007 Ribbon开发                
<group id="ContentGroup" label="Content">
Office 2007 Ribbon开发                    
<button id="textButton" label="Insert Text"
Office 2007 Ribbon开发                                   screentip
="Text" onAction="OnTextButton"
Office 2007 Ribbon开发                                   supertip
="Inserts text at the cursor location."/>
Office 2007 Ribbon开发                    
<button id="tableButton" label="Insert Table"
Office 2007 Ribbon开发                                   screentip
="Table" onAction="OnTableButton"
Office 2007 Ribbon开发                                   supertip
="Inserts a table at the cursor location."/>
Office 2007 Ribbon开发                    
<toggleButton id="toggleButton1" 
Office 2007 Ribbon开发                            size
="large"
Office 2007 Ribbon开发                            label
="My Button"
Office 2007 Ribbon开发                            screentip
="My Button Screentip"
Office 2007 Ribbon开发                            onAction
="OnToggleButton1" 
Office 2007 Ribbon开发                            imageMso
="HappyFace" />
Office 2007 Ribbon开发                    
<checkBox id="checkbox1" 
Office 2007 Ribbon开发                                 enabled
="true" 
Office 2007 Ribbon开发                                 getLabel
="GetLabel" 
Office 2007 Ribbon开发                                 keytip
="A1" 
Office 2007 Ribbon开发                                 getScreentip
="GetScreentip" 
Office 2007 Ribbon开发                                 supertip
="This is a super tip for the checkBox." 
Office 2007 Ribbon开发                                 visible
="true" 
Office 2007 Ribbon开发                                 getPressed
="GetPressed" 
Office 2007 Ribbon开发                                 onAction
="OnCheckBoxAction" />
Office 2007 Ribbon开发
Office 2007 Ribbon开发                    
<dialogBoxLauncher>
Office 2007 Ribbon开发                        
<button id="button2" 
Office 2007 Ribbon开发                           screentip
=
Office 2007 Ribbon开发                     "Launched by the DialogBoxLauncher
Office 2007 Ribbon开发                     control."
 
Office 2007 Ribbon开发                           onAction
="dialogBoxLauncherOnAction" />
Office 2007 Ribbon开发                    
</dialogBoxLauncher>
Office 2007 Ribbon开发
Office 2007 Ribbon开发                
</group>
Office 2007 Ribbon开发                
<group id="ContentGroup1" label="Content">
Office 2007 Ribbon开发                    
<editBox id="EditBox1" getText="ThisDocument.MyTextMacro" 
Office 2007 Ribbon开发  label
="My EditBox" onChange="ThisDocument.MyEditBoxMacro"/>
Office 2007 Ribbon开发                    
<comboBox id="Combo1" label="My ComboBox" 
Office 2007 Ribbon开发                      onChange
="ThisDocument.MyComboBoxMacro">
Office 2007 Ribbon开发                        
<item id="Zip1" label="33455" />
Office 2007 Ribbon开发                        
<item id="Zip2" label="81611" />
Office 2007 Ribbon开发                        
<item id="Zip3" label="31561" />
Office 2007 Ribbon开发                    
</comboBox>
Office 2007 Ribbon开发                    
<comboBox id="comboBox2" 
Office 2007 Ribbon开发       label
="Insert More Text." 
Office 2007 Ribbon开发       getText
="GetText" 
Office 2007 Ribbon开发       imageMso
="TableDrawTable" />
Office 2007 Ribbon开发
Office 2007 Ribbon开发                    
<menu id="mnuProjectsReports" label="More Reports" 
Office 2007 Ribbon开发     imageMso 
="ViewsReportView" itemSize="large" >
Office 2007 Ribbon开发                        
<button id="cmdProjectsCompletedAndDeferred" label="Completed and Deferred Projects" 
Office 2007 Ribbon开发                        imageMso
="ViewsReportView" onAction="Ribbon.ProjectsCompletedAndDeferred"/>
Office 2007 Ribbon开发                        
<button id="cmdProjectsBalanceSheet" label="Project Balance Sheet" 
Office 2007 Ribbon开发                        imageMso
="ViewsReportView" onAction="Ribbon.ProjectsBalanceSheet"/>
Office 2007 Ribbon开发                    
</menu>
Office 2007 Ribbon开发                    
<button id="cmdProjectsCommonDeliverables" label="Common Deliverables" 
Office 2007 Ribbon开发    imageMso
="ReviewShareWorkbook" size="large" onAction="Ribbon.ProjectsCommonDeliverables"/>
Office 2007 Ribbon开发                    
<dialogBoxLauncher>
Office 2007 Ribbon开发                        
<button id="button3" screentip="show task pane." onAction="dialogBoxLauncherOnAction1" />
Office 2007 Ribbon开发                    
</dialogBoxLauncher>
Office 2007 Ribbon开发                
</group>
Office 2007 Ribbon开发                
<group id="ContentGroup2" label="SplitButton">
Office 2007 Ribbon开发                    
<splitButton id="cmdVendorSplitButton" size="large" >
Office 2007 Ribbon开发                        
<menu id="mnuVendor" imageMso ="RecordsAddFromOutlook" itemSize="large" >
Office 2007 Ribbon开发                            
<button id="cmdVendorList"  label="Vendor List" imageMso="RecordsAddFromOutlook" 
Office 2007 Ribbon开发                           onAction
="Ribbon.VendorList"/>
Office 2007 Ribbon开发                            
<button id="cmdVendorAddressBook" label="Address Book" imageMso="ViewsReportView" 
Office 2007 Ribbon开发                            onAction
="Ribbon.VendorAddressBook"/>
Office 2007 Ribbon开发                            
<button id="cmdVendorPhoneList" label="Phone List" imageMso="ViewsReportView" 
Office 2007 Ribbon开发                            onAction
="Ribbon.VendorPhoneList"/>
Office 2007 Ribbon开发                        
</menu>
Office 2007 Ribbon开发                    
</splitButton>
Office 2007 Ribbon开发                
</group>
Office 2007 Ribbon开发
Office 2007 Ribbon开发
Office 2007 Ribbon开发            
</tab>
Office 2007 Ribbon开发        
</tabs>
Office 2007 Ribbon开发    
</ribbon>
Office 2007 Ribbon开发
</customUI>
Office 2007 Ribbon开发


这里可以使用很多的回调函数,比如Combox下的GetLable,GetScreentip,GetPressed,可以让我们在程序中去定制显示内容.
Office 2007 Ribbon开发

Ribbon开发的相关资料可以从这里查找,微软同样也给出了部分代码实例。


相关文章: