精选文库
3. 双击 Help ToggleButton按钮,实现它的单击事件:
// 帮助选项卡中toggleButton的单击事件 private void toggleHelpBtn_Click(object sender, RibbonControlEventArgs e) { // 通过toggleHelpButton的选中状态来控制帮助任务栏的显示和隐藏 Globals.ThisAddIn.helpTaskPane.Visible = toggleHelpBtn.Checked; }
通过上面的三步也就完成了一个Ribbon的创建了,当我们创建好一个Ribbon之后,我们可以通过我们自定义的Ribbon下的按钮来显示/隐藏我们的任务窗体,但是到这里,Ribbon的开发并没有结束,此时还有一个问题就是——当我们点击 “Excel help”右上角的X按钮关闭时,我们Ribbon下的按钮状态也要跟着更变(大家可以测试,当我们关闭Word中的导航任务窗体时,试图下的\导航窗格\复选框“也会跟着改变),此时我们就需要实现:点击关闭按钮与Help按钮状态同步的功能的,此时我们只需要对TaskPane的
VisibleChanged事件进行处理就可以(因为关闭任务窗体就会触发该事件,所以只需要把同步状态的代码放在该事件就可以了),具体代码如下:
// 定义一个任务窗体 internal
Microsoft.Office.Tools.CustomTaskPane helpTaskPane; private void ThisAddIn_Startup(object sender, System.EventArgs e)
-
精选文库
{ // 把自定义窗体添加到CustomTaskPanes集合中 // ExcelHelp 是一个自定义控件类 helpTaskPane =
// 使任务窗体可见 //helpTaskPane.Visible = true; // 通过DockPosition属性来控制任务窗体的停靠位置, // 设置为 MsoCTPDockPosition.msoCTPDockPositionRight这个代表停靠到右边,这个值也是默认值 //helpTaskPane.DockPosition =
MsoCTPDockPosition.msoCTPDockPositionRight; // 当用户点击 “Excel help”右上角的X按钮关闭时,我们需要同步选项卡上button的状态 helpTaskPane.VisibleChanged += new
EventHandler(helpTaskPane_VisibleChanged); // 添加上下文菜单 //AddToCellMenu(); } private void // 用户点击 \侧边栏右上角的X按钮关闭它时 // 我们需要正确同步 “帮助”按钮的状态 // 我们可以通过处理 “Excel Help”侧边栏的VisualChanged 事件完成 private void helpTaskPane_VisibleChanged(object sender, EventArgs e) { // 获得Help Ribbon 对象 Help helpRibbon = Globals.Ribbons.GetRibbon
运行效果图为:
Globals.ThisAddIn.CustomTaskPanes.Add(new ExcelHelp(\\Help\
ThisAddIn_Shutdown(object sender, System.EventArgs e) { }
-
精选文库
-
精选文库
四、自定义上下文菜单
看完上面两部分的实现之后,我在学习的过程中又想——能不能通过右键菜单来显示/隐藏任务窗体呢? 对于这点VSTO也是可以做到的,我们只需要添加CommandBarButton对象(当我们右键一个单元格(即为Cell)的时候,我们可以看到一上下文菜单,菜单内所有控件(不管是按钮还是排序这样的菜单控件)),然后设置该对象的属性和添加一个Click事件,主要代码如下:
// 添加一个自定义按钮到单元格上下文菜单中 contextMenu =Application.CommandBars[\commandBarbtn =
(CommandBarButton)contextMenu.Controls.Add(MsoControlType.msoControlButton, Before: 1); commandBarbtn.Tag = \commandBarbtn.Caption = \查看帮助\
-
精选文库
49; commandBarbtn.Click+=new
_CommandBarButtonEvents_ClickEventHandler(commandBarbtn_Click);
运行效果为(这样我们右键Cell的时候就会多出一个我们自己定义的 ”查看帮助“按钮):
五、小结
到这里本专题的内容就介绍完了,本专题主要介绍如何为Excel创建一个自定义的任务窗体、Ribbon和上下文菜单,对于Word和Outlook这部分的内容我就不重复介绍,创建方式和Excel的创建方式很类似。在下一个专题中我将给大家介绍下如何创建Word解决方案。
本专题所有源码:http://files.cnblogs.com/zhili/ExcelHelpTaskPane.zip
-