在本篇文章中,将探讨如何在Winforms应用程序中实现Ribbon控件的高级功能,包括菜单组(Menu Group)、应用程序菜单中的分割按钮(Split Button)和下拉按钮(Drop Down Button)。这些功能可以极大地增强用户界面的交互性和功能性。
首先,需要理解分割按钮和下拉按钮之间的区别。下拉按钮并不是一个按钮,点击它不会有任何反应,但当鼠标悬停在它上面时,会展开一个按钮列表。而分割按钮本身是一个按钮,可以对它做出响应,鼠标悬停时同样会展开一个按钮列表。
下拉按钮通常用于没有明显默认选项的一组项目。例如,在“画图”程序中的“旋转”功能,有“旋转90度”、“旋转180度”和“旋转270度”等选项,但没有一个明显的默认选项。
分割按钮则通常用于有明显默认选项的一组项目。例如,“另存为”按钮,其中有一个默认的保存格式。
在Ribbon应用程序中使用分割按钮和下拉按钮的命令标记与之前相同,只需定义一些稍后在视图标记中列出的命令。例如:
<Command Name="cmdButtonDropA" Id="1008" LabelTitle="Drop A" LabelDescription="Sub button A" TooltipTitle="Drop A">
<Command.LargeImages>
<Image>Res/DropA32.bmp</Image>
</Command.LargeImages>
</Command>
<Command Name="cmdButtonDropB" Id="1009" LabelTitle="Drop B" LabelDescription="Sub button B" TooltipTitle="Drop B">
<Command.LargeImages>
<Image>Res/DropB32.bmp</Image>
</Command.LargeImages>
</Command>
相关的视图标记定义如下:
<DropDownButton CommandName='cmdDropDownButton'>
<MenuGroup Class='MajorItems'>
<Button CommandName='cmdButtonDropA' />
<Button CommandName='cmdButtonDropB' />
<Button CommandName='cmdButtonDropC' />
</MenuGroup>
</DropDownButton>
<SplitButton>
<SplitButton.ButtonItem>
<Button CommandName='cmdButtonDropB' />
</SplitButton.ButtonItem>
<SplitButton.MenuGroups>
<MenuGroup Class='MajorItems'>
<Button CommandName='cmdButtonDropA' />
<Button CommandName='cmdButtonDropB' />
<Button CommandName='cmdButtonDropC' />
</MenuGroup>
</SplitButton.MenuGroups>
</SplitButton>
代码后台部分与之前的文章相同,只需处理 IUICommandHandler.Execute 并对应 ID。
菜单组是应用程序菜单中一组菜单项的集合。它最有用的功能是为一组项目提供标题,例如上一张图片中的“文件菜单”。如果只想在菜单项之间使用简单的分隔符,可以使用不附加任何命令的 MenuGroup。
<MenuGroup>
…
</MenuGroup>
“Windows Ribbon for WinForms”的最新版本以及示例应用程序可以在这里找到。