Ribbon上包含以下一些元素,如图所示:

元素对应API:

Element

Ribbon API

Quick Access Toolbar    RibbonControl.Toolbar
RibbonQuickAccessToolbar.ItemLinks
Application Button    RibbonControl.ShowApplicationButton
RibbonControl.ApplicationButtonDropDownControl
Main pages    RibbonControl.Pages
Page Category    RibbonControl.Categories
Contextual pages    RibbonPageCategory.Pages
Page Groups    RibbonPage.Groups
RibbonPageGroup.ItemLinks
Bar Item links    RibbonControl.Items
BarItemLink.Item

1、首先新建一窗体工程,从工具栏“导航和布局Navigation&Layout”拖动RibbonControl到窗体,RibbonControl自动停靠到Form靠上的位置,如下图所示:

  Page:表示Ribbon的菜单项,参考Word2007的“开始”菜单(菜单下又分很多PageGroup,每一个PageGroup里可以包含多个功能项,如按钮、文本、编辑框等等)功能项和Quick Access快速访问实质是一样的,所以可以共用相同按钮或文本等控件。

  PageGroup:表示菜单下面的各个功能项,参考Word2007“开始”菜单下的“剪贴板”功能项。每一个PageGroup里可以包含多个功能项,如按钮、文本、编辑框等等

  Quick Access:表示快捷功能键,参考Word2007“开始”上面的快捷按钮图标。(相当于03下的工具栏)

新增:

  选中Page,右键点击可以新增Page或者新增属于本Page的PageGroup。

  我们先增加一个Page,并在第一个Page下的Group里新增一个按钮button。

删除:

  点击右RibbonControl右上角的三角符号 ,选择Run Designer,

  在第一项Ribbon Items里,可看到刚才新建的Page和PageGroup,在这里选中想要删除的项目,点击上面的Remove既可。

  Quick Access的新建和删除参考上述的步骤既可。

2、转换窗体为Ribbon窗体

选择RibbonControl控件的右上角的三角符号,选择Convert Form to Ribbonform 窗体会转换为Ribbon格式

要把DX图标换成自己的,修改RibbonControl.ApplicationICon即可

不显示快速访问this.ribbonControl1.ToolbarLocation = DevExpress.XtraBars.Ribbon.RibbonQuickAccessToolbarLocation.Hidden;

3、设置外观和样式

这个可以通过拖动DXXX Components组的DefaultLookAndFeel控件到窗体设计器来设置ribbon的皮肤。(我发现13.2.8试用版会影响解决方案的其他项目,所以要慎重哦,删除了仍有影响)

也可以通过设置控件自身UseDefaultLookAndFeel=false,然后设置自己的样式和外观。4

4、单击应用程序图标弹出菜单

所以是PopupMenu,其实任何一个DropDown形式的都可以

拖动一个PopupMenu控件到窗体设计器,将ribbonControl.ApplicationButtonDropDownControl=popupMenu1

单击ApplicationButton就会出现弹出菜单了。

四、新增图片资源

  从工具箱内拖住ImageCollection控件到Form上,类似于DefaultLookAndFeel,在Form下方出现新增控件,右键点击此控件,选中Add Image,可从本地获取相关图标,我在这里新增了四个小图标,如下图所示:

  下面我想要在第一个PageGroup里的Button前面新添加一个小图标。

  (1)查看Ribbon Control的属性,将imagecollection 赋给Images属性。

  (2)选中button,查看其属性,选中ImageIndex属性,选择需要添加的图标既可。

如下图所示:

--------------------------------------------------

附录:

DevExpress点滴学习--换肤
一、在项目下新建RibbonForm  命名为:useSkin
二、添加引用DevExpress.OfficeSkins
      DevExpress.UserSkins.BonusSkins
三、将ribbonPage1的Text属性设置为:皮肤

ribbonPageGroup1的Text属性设置为:更换皮肤

在ribbonPageGroup1下新建个ribbonGalleryBarItem1,将其Caption的属性设置为:请选择您喜欢的皮肤,并添GalleryItemClick    事件:ribbonGalleryBarItem1_GalleryItemClick

四、在应用程序的主入口里添加:

static void Main()
        {
            //皮肤
            DevExpress.UserSkins.OfficeSkins.Register();
            DevExpress.UserSkins.BonusSkins.Register();
            DevExpress.Skins.SkinManager.EnableFormSkins();

Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Exercises.useSkin());
        }

五、添加命名空间using System.Xml;

在事件ribbonGalleryBarItem1_Click里添加代码:

private void ribbonGalleryBarItem1_Click(object sender, DevExpress.XtraBars.Ribbon.GalleryItemClickEventArgs e)
        {
            string name = string.Empty;
            string caption = string.Empty;
            if (ribbonGalleryBarItem1.Gallery == null) return;
            caption = ribbonGalleryBarItem1.Gallery.GetCheckedItems()[0].Caption;//主题的描述
            caption = caption.Replace("主题:", "");
            //name = bsiPaintStyle.Manager.PressedLink.Item.Tag.ToString();//主题的名称
            ribbonGalleryBarItem1.Caption = "主题:" + caption;

XmlDocument doc = new XmlDocument();
            doc.Load("SkinInfo.xml");
            XmlNodeList nodelist = doc.SelectSingleNode("SetSkin").ChildNodes;
            foreach (XmlNode node in nodelist)
            {
                XmlElement xe = (XmlElement)node;//将子节点类型转换为XmlElement类型 
                if (xe.Name == "Skinstring")
                {
                    xe.InnerText = caption;
                }
            }

doc.Save("SkinInfo.xml");
            //XtraMessageBox.Show("您选择了主题:" + caption);
        }

添加命名空间

using DevExpress.XtraBars.Helpers;
using DevExpress.LookAndFeel;

六、添加命名空间using DevExpress.XtraEditors;

在Load下添加代码:

public string defaultSkinName;//皮肤
        private void useSkin_Load(object sender, EventArgs e)
        {
            SkinHelper.InitSkinGallery(ribbonGalleryBarItem1);
            CheckFile();//检查文件
            GetXmlSkin();//获取xml主题
            UserLookAndFeel.Default.SetSkinStyle(defaultSkinName);//设置主题样式
            ribbonGalleryBarItem1.Caption = "主题:" + defaultSkinName;
        }

#region 检查XML文件是否存在
        public void CheckFile()
        {
            try
            {
                if (System.IO.File.Exists("SkinInfo.xml") == false)
                {
                    //XtraMessageBox.Show("不存在XML");
                    CreateXml();
                }
            }
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

#region 创建XML文件

public void CreateXml()
        {
            XmlDocument doc = new XmlDocument();
            //建立xml定义声明
            XmlDeclaration dec = doc.CreateXmlDeclaration("1.0", "utf-8", null);
            doc.AppendChild(dec);

//创建根节点
            XmlElement root = doc.CreateElement("SetSkin");
            XmlElement rootone = doc.CreateElement("Skinstring");//皮肤

//将one,two,插入到root节点下
            doc.AppendChild(root);
            root.AppendChild(rootone);
            doc.Save("SkinInfo.xml");
        }

#endregion

#region 读取Xml节点内容

public void GetXmlSkin()
        {
            try
            {
                XmlDocument mydoc = new XmlDocument();
                mydoc.Load("SkinInfo.xml");
                XmlNode ressNode = mydoc.SelectSingleNode("SetSkin");
                defaultSkinName = ressNode.SelectSingleNode("Skinstring").InnerText;

}
            catch (Exception ex)
            {
                XtraMessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }

#endregion

#endregion

好了,现在就可以为自己的窗体选择喜欢的皮肤了。

看一下效果吧。。。。

Look And Feel被类UserLookAndFeel类实现,每个支持该机理的控件,都有一项属性叫做LookAndFeel,通常,所有的控件都是使用该类的一个静态缺省对象。

例如在窗体中添加一个简单按钮DevExpress.XtraEditors.SimpleButton simpleButton1,该按钮就会有LookAndFeel属性:

你要特别注意这个LookAndFeel下的UseDefaultLookAndFeel和 UseWindowsXPTheme,这两个属性能够否决所有其他的设置。

如果UseDefaultLookAndFeel被设置为True,则所有其他的设置将会被无视,将会采用默认的设置,那么默认的设置是什么呢?默认的设置又是可以定制的。这个看起来有点奇怪,其实慢慢看就会明白。

在工具箱中Component下拖动一个DefaultLookAndFeel控件(DevExpress.LookAndFeel.DefaultLookAndFeel defaultLookAndFeel1)
后,设置其属性,这个属性就会作为全局的默认属性,程序员就可以自行定制默认的LookAndFeel了。

这个时候你试试设置UseDefaultLookAndFeel会发现只能改为True(因为没有上级的LookAndFeel供其参考了),同时把UseWindowsXPTheme设置为False,然后修改一下SkinName,例如为Lilian,会发现简单按钮的外观发生了改变。在往其中添加控件,你会发现会自动使用Lilian外观:

现在,一旦我修改了defaultLookAndFeel1的SkinName,这四个控件的外观都会按统一的样式发生变化,有趣的是,这一改变是可以在运行时发生的,例如我们给simpleButton1添加事件:

private void simpleButton1_Click(object sender, EventArgs e)
{
    this.defaultLookAndFeel1.LookAndFeel.SkinName = "iMaginary";
}

在运行过程就可以修改程序的外观了。

如果UseDefaultLookAndFeel被设置为False,控件的外观就会受到UseWindowsXPTheme的影响,如果说UseDefaultLookAndFeel是总统的话,则UseWindowsXPTheme就是副总统了。该属性决定了控件的外观是否受到XP样式的影响,当副总统说True的时候,并且系统恰好使用了XP主题,则UserLookAndFeel.Style的值就会被无视,而采用XP的主题。

修改简单按钮的的点击事件,试试分别在副总统说True和False的时候运行该代码:

private void simpleButton1_Click(object sender, EventArgs e)
{
    this.defaultLookAndFeel1.LookAndFeel.Style = LookAndFeelStyle.Office2003;
}

你就会知道副总统还是管点事的。

如果真想修改Style,比较好的建议是在运行时修改其值,例如:

private void simpleButton1_Click(object sender, EventArgs e)
{
    this.defaultLookAndFeel1.LookAndFeel.UseWindowsXPTheme = false;
    this.defaultLookAndFeel1.LookAndFeel.Style = LookAndFeelStyle.Office2003;//要使用命名空间using DevExpress.LookAndFeel;

}
这样就可以不管控件的默认值了。

最后说说UserLookAndFeel.Style,它接收或者返回一个 LookAndFeelStyle的枚举值,其中有Flat、Office2003、UltraFlat等,具体可查看帮助文档。

呃,还忘记了SkinName,前面可以发现,该属性接收或者返回的是字符串,其实可行的字符串也就那几种吧,即Caramel、Money Twins、Lilian、iMaginary、DevExpress Dark Style、Black、Blue,如果设置其他值,会有什么后果呢?你自己试试吧
————————————————
版权声明:本文为CSDN博主「whucv」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/archielau/article/details/37544251

DevExpress 设计Ribbon界面相关推荐

  1. delphi下实现ribbon界面的方法(一)

    delphi下实现ribbon界面的方法(一) office 2007和2010是现在大多数人经常使用的办公软件,几乎每天都在使用.因此,在软件中如果使用类office的界面样式,客户用着非常习惯,而 ...

  2. 关于MFC中Ribbon界面如何修改标题属性问题

    最近在工作中,遇到了需要将软件从中文转成英文的问题.通常来说,MFC界面上的控件均可以用SetWindowText来解决.但对于Ribbon,往往不怎么好使.也是从网上找了很多资料,最终总结如下. 先 ...

  3. 在C#中使用Ribbon界面(一)——创建一个Ribbon窗口

    自Office2007开始,软件都逐渐地采用了Ribbon界面,一方面是时尚,如同许多厂商声称的那样,是 state of arts,另外,通过调查表明,Ribbon界面比传统的下拉栏菜单方式的工作效 ...

  4. qtcreator 界面样式_Office Ribbon 界面开发入门教程:如何用Qt实现Office界面样式

    Ribbon是什么? Ribbon是一种以面板及标签页为架构的用户界面.相当于它是一个收藏了命令按钮和图标的面板(把命令组织成一组"标签",每一组包含了相关的命令.每一个应用程序都 ...

  5. Visual C++ 2010创建Ribbon界面(上)

    随着Office 2007的发布,它改变了以往传统的下拉式菜单用户界面,取而代之的是全新的被称之为"Ribbon"的固定式工具栏界面.微软声称这种新的用户界面能够使用户更容易地使用 ...

  6. C#之CAD二次开发(14) Ribbon界面初探

    # 0. 引言 从CAD2009版本以后就开始使用上了Ribbon界面,更早的版本使用的界面相对较为简单,对比一下就知道啥是Ribbon界面了 这是CAD2006界面,经典的菜单工具栏,略low 这是 ...

  7. 创建Ribbon界面

    Visual C++ 2010创建Ribbon界面(上) 2009-08-19 14:22:57|  分类: VC++程序设计 [IT168 专稿]随着Office 2007的发布,它改变了以往传统的 ...

  8. (转载)VS2010/MFC编程入门之五十四(Ribbon界面开发:使用更多控件并为控件添加消息处理函数)...

    上一节中鸡啄米讲了为Ribbon Bar添加控件的方法.本节教程鸡啄米将继续完善前面的实例,讲解一些稍复杂的控件的添加方法,及如何为它们添加消息处理函数. 一.为Ribbon Bar添加更多Ribbo ...

  9. mysql 录入窗体设计_在Access中,可用于设计输入界面的对象是   A)窗体 B)报表 C)查询 D)表...

    展开全部 在Access中,可用于设计输入界面的对象是窗体.不属于Access数据类型62616964757a686964616fe4b893e5b19e31333431373330的是报表. 窗体对 ...

  10. PyQt5 图形界面-用Qt Designer来设计UI界面,并转化为python代码运行实例演示

    Qt Designer 是 Qt Creater 程序里的一个功能. PyQt5 是把 Qt Designer 设计的界面转化为 python 代码的库. 请看这篇文章: Qt Creater.PyQ ...

最新文章

  1. 简单实现几种常见的前端效果,附代码!
  2. mysql删除不存在行数据报错_MySQL学习笔记11复制错误处理(二)删除不存在的行的问题...
  3. php mysql 绕过_PHP中md5绕过
  4. 用户无故被扣21000元话费,扣钱容易还钱难,运营商的回应看醉了
  5. 一年中重要的节日列表_感悟 | 一年中最重要的节日是春节!
  6. Jenkins插件开发(四)-- 插件发布
  7. Hadoop yarn配置参数
  8. 序列最小最优化算法(SMO) SVM凸优化求
  9. 【数据分享】中国城市统计年鉴_2001-2021年
  10. html 车牌号输入代码,html中车牌号省份简称输入键盘的示例代码(3)
  11. Python 音频: 使用 sounddevice 调用 ASIO 声卡驱动
  12. 天下会 - Google系列之谷歌搜索引擎高级用法:使用搜索语法精确搜索
  13. Excel 行列转换的最简方法
  14. 一只兔子帮你理解 kNN
  15. thingworx项目-mushup
  16. 压在redis身上的三座大山
  17. 1055: 兔子繁殖问题
  18. 什么是Nginx?有什么用?
  19. HTML页面设置ico图标
  20. Kmeans聚类时K值选择的方法

热门文章

  1. 网易回应暴力裁员事件并道歉了!连发两声明:当事人绩效确不合格...刘强东说了这句话,意外上热搜...
  2. PopupWindow 弹窗显示
  3. 利用Python爬虫批量下载百度图库图片
  4. Matlab如何多行添加注释和取消注释
  5. html中免费的四级联动,四级联动.html
  6. Python学习,55道django面试题,来试试吧
  7. [Xilinx FPGA] #1 Xilinx ISE 工程开发全流程笔记
  8. 【Verilog语法简介】
  9. 【密码学】一文读懂ZUC算法
  10. [K.O.]安装iTunes提示此Windows Installer软件包有一个问题…!