1.TextEditor(barEditItem)取文本
string editValue = barEditItem1.EditValue.ToString(); //错误,返回null

string editValue = ((DevExpress.XtraEditors.TextEdit)barEditItem).EditValue.ToString(); //正确,返回文本框内容
2.ComboBoxEdit(barEditItem)添加Item
string item = "comboboxItem1";
((DevExpress.XtraEditors.Repository.RepositoryItemComboBox)this.barEditItem.Edit).Items.Add(item);
3.ComboBoxEdit(barEditItem)取文本
string itemValue = this.barEditItem.EditValue.ToString();

4.Ribbon控件

//添加Page
DevExpress.XtraBars.Ribbon.RibbonPage ribbonPage = new RibbonPage();
ribbonControl.Pages.Add(ribbonPage);
//添加Group
DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup = new RibbonPageGroup();
ribbonPage.Groups.Add(ribbonPageGroup);
//添加Button
DevExpress.XtraBars.BarButtonItem barButtonItem = new BarButtonItem();
ribbonPageGroup.ItemLinks.Add(barButtonItem);
//添加barSubItem
DevExpress.XtraBars.BarSubItem barSubItem = new BarSubItem();
ribbonPageGroup.ItemLinks.Add(barSubItem);
//barSubItem下添加Button
barSubItem.AddItem(barButtonItem);

//奇怪的删除Page问题
while (this.ribbonControl.Pages.Count > 0)
{
ribbonControl.Pages.Remove(ribbonControl.Pages[0]); //调试正常,运行报异常
}
while (this.ribbonControl.Pages.Count > 0)
{
ribbonControl.SelectedPage = ribbonControl.Pages[0];
ribbonControl.Pages.Remove(ribbonControl.SelectedPage); //运行正常
}
//禁止F10键Tips
ribbonControl.Manager.UseF10KeyForMenu = false;
//DX按钮
ApplicationIcon属性改变图标
右键 Add ApplicationMenu 添加evExpress.XtraBars.Ribbon.ApplicationMenu

5.HitInfo

//在Tab页上点击右键的事件响应
void xtraTabbedMdiManager_Event(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right && ActiveMdiChild != null)
{
DevExpress.XtraTab.ViewInfo.BaseTabHitInfo hInfo = xtraTabbedMdiManager.CalcHitInfo(e.Location);
//右键点击位置:在Page上且不在关闭按钮内
if (hInfo.IsValid && hInfo.Page != null && !hInfo.InPageCloseButton)
{
this.popupMenu.ShowPopup(Control.MousePosition);//在鼠标位置弹出,而不是e.Location
}
}
}
//在ribbon上点击右键的事件响应
private void ribbonControl1_ShowCustomizationMenu(object sender, RibbonCustomizationMenuEventArgs e)
{
//禁掉原系统右键菜单
e.ShowCustomizationMenu = false;
//右键位置:在barButtonItem上
if (e.HitInfo != null
&& e.HitInfo.InItem
&& e.HitInfo.Item.Item is BarButtonItem)
{
this.popupMenu.ShowPopup(Control.MousePosition);
}
//右键位置:在barSubItem中的barButtonItem上
else if (e.Link != null
&& e.Link.Item != null
&& e.Link.Item is BarButtonItem)
{
this.popupMenu.ShowPopup(Control.MousePosition);
}
}

6.皮肤

//添加皮肤程序集后注册皮肤
DevExpress.UserSkins.OfficeSkins.Register();
DevExpress.UserSkins.BonusSkins.Register();
//设置皮肤
DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle("Liquid Sky"); //若皮肤名称错误则按系统默认设置(第一个皮肤)
//GalleryFilterMenuPopup事件设置弹出筛选菜单的“All Groups”为中文
private void rgbiSkins_GalleryFilterMenuPopup(object sender, GalleryFilterMenuEventArgs e)
{
e.FilterMenu.ItemLinks[n].Caption = "所有皮肤"; //n=分组数+1
}
//GalleryInitDropDownGallery事件设置弹出皮肤列表的表头“ALL Groups”为中文
private void rgbiSkins_GalleryInitDropDownGallery(object sender, InplaceGalleryEventArgs e)
{
e.PopupGallery.FilterCaption = "所有皮肤";
}

7.dockManager

将视图的状态信息保存到xml文件
dockManager1.SaveLayoutToXml("..\\UserConfig\\ViewInfo.xml");
导出xml中保存的状态信息
dockManager1.RestoreLayoutFromXml("..\\UserConfig\\ViewInfo.xml");

8.barManager

设置bar的字体与系统字体
barAndDockingController1.AppearancesBar.ItemsFont = new Font(this.Font.FontFamily, currentFontSize);

9.设置系统字体

DevExpress.Utils.AppearanceObject.DefaultFont = new Font(this.Font.FontFamily, currentFontSize);

10.treeView

为tree节点加右键菜单并选中该节点
private void treeList1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
DevExpress.XtraTreeList.TreeListHitInfo hi = treeList1.CalcHitInfo(e.Location);
if (hi.Node != null && hi.Node.ImageIndex == 5) //叶子节点的ImageIndex == 5
{
TreeListNode node = treeList1.FindNodeByID(hi.Node.Id);
treeList1.FocusedNode = node;

this.popupMenu1.ShowPopup(MousePosition);
}
}
}

一、皮肤
  DexExpress的控件都有自己的样式,有不少的皮肤,然而怎样让一个System.Windows.Forms.Form窗口换肤了,有没有办法呢?用DexExpress是没有什么简单办法的,如果你要让窗体都换肤,只有用DevExpress.XtraEditors.XtraForm一条路了。用它后,还需在Pragram.cs中的Application.Run之前写上一句:DevExpress.Skins.SkinManager.EnableFormSkins();这样就差不多了。点此处见参考资料!
  二、样式设置有诀窍
  DexExpress的控件都有一个LookAndFeel属性,这个属性有两个属性:SkinName、Style,但是,我们如果只设置这两个,结果设置来设置去都没有反映,这是怎么回事,DexExpress说,去看Demo吧,日,看demo是大海捞针啊,那么多属性,谁晓得是哪儿出了问题。。怎么解决呢?LookAndFeel还有一个UseDefaultLookAndFeel属性,它默认值是true,请将它设为false即可。这是什么原因呢?为什么要这么做呢?DexExpress有一个组件:DefaultLookAndFeel,它的用法是拖到窗体上就是了,然后你修改它的LookAndFeel属性就是了,修改了它,那么此窗体上所有UseDefaultLookAndFeel为true的控件都用上了相同的样式。DevExpress的这个思想是蛮好的。这样做好处极大,再也不用一个控件一个控件地设置。有个别例外,就单独设置。
  另外,我还注意到DevExpress有几个类似的控件,如:
  DefaultToolTipControler、StyleController。它们的用意都集体管理界面风格。
  点此处进见参考资料!
  三、DexExpress的工具栏、菜单
  微软的的工具栏、菜单栏太难看了。让人烦闷。DexExpress也有。怎么使用呢?也有一些要注意的地方,这些问题demo都不会主动告诉我们的。
  从工具栏上拖个DevExpress.XtraBars.BarManage,拖上去后,它会自动生成三条DevExpress.XtraBars.Bar。DexExpress中,工具栏跟菜单是一个东西,都是建立在DevExpress.XtraBars.Bar基础之上,DevExpress.XtraBars.Bar是工具栏图标、菜单项的容器。它上面写得明白:add,让你点它,点它就可以创建菜单项、工具栏按钮等等。但是,我遇到了麻烦,相信大伙跟我一样,新建了一个以后,你输入了名称,按道理,你在其他地方点击一下,就相当于确认创建了,但是,我发现,无论你鼠标怎么动,vs失去了响应。后来才搞清楚,原来要回车一下。这种确认方式跟以前的习惯很不一样。我还以为vs死了。
//禁止barManage右键显示
this.barManager1.AllowCustomization = false;
this.barManager1.AllowShowToolbarsPopup = false;
//去除barManage右边小三角 自定制
this.barManager1.AllowQuickCustomization = false;

  四、选项卡式子窗口
  这个问题在前面已经讲了,但是还有一个问题,怎样实现双击选项卡时就关闭对应的窗口呢?就你Maxthon一样。我也去看了XtraTabbedMdiManager的事件,只有mouseUp、mouseDown。经过一篇文章的启发,得到了正确的解决方法(点此处看参考资料):
  第一步:在XtraTabbedMdiManager所在mdi父窗体中定义一个变量:
  private int clickTick = 0;
  第二步:注册事件xtraTabbedMdiManager1_MouseDown,事件处理代码如下:
/// <summary>
/// 双击标签关闭窗口
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void xtraTabbedMdiManager1_MouseDown(object sender, MouseEventArgs e)
{
DevExpress.XtraTab.ViewInfo.BaseTabHitInfo hi = xtraTabbedMdiManager1.CalcHitInfo(new Point(e.X, e.Y));
if (hi.HitTest == DevExpress.XtraTab.ViewInfo.XtraTabHitTest.PageHeader)
{
if (clickTick == -1 || (System.Environment.TickCount - clickTick) > SystemInformation.DoubleClickTime)
{
clickTick = System.Environment.TickCount;
}
else
{
if ((System.Environment.TickCount - clickTick) < SystemInformation.DoubleClickTime)
{
//MessageBox.Show("DoubleClick: " + hi.Page.Text);
this.ActiveMdiChild.Close();
}
clickTick = -1;
}
}
}
  原理简单,是通过计算两个mouseDown之间的时间差来达到识别双击的目的。
  五、NotifyIcon的问题
  用了dev的菜单后,当然不能再去用ContextMenuStrip。如果用了ContextMenuStrip,那么软件里面有两种风格的菜单,多不雅观啊。所以只能用devexpress带的菜单了,dev提供三种菜单:
  DevExpress.XtraBars.Bar、ApplicationMenu、PopupMenu
  这三者当然就只能用PopuMenu了。怎么做托盘。DevExpress中并没有提供,只能微软的了。但是NotifyIcon只能绑定到ContextMenuStrip,受群里兄弟的启发,手工显示出来。问题解决,代码如下:
  popupMenu1.ShowPopup(Cursor.Position);
  这句代码写在NotifyIcon的mouseup事件中,不能用e.x,e.y的方法取坐标,它们都返回0。注意,popupMenu只有在BarManage存在的时候才能编辑,所以还是要先拖个BarManage。
补充:
修改ribbon图标
选择 ribbon 控件,修改 ribbon.ApplicationIcon

对话框的使用
对话框#region 对话框
/// <summary>
/// 确认对话框
/// </summary>
/// <param name="strString">提示内容</param>
/// <returns>用户点击结果</returns>
public DialogResult Confirm(string strString)
{
return DevExpress.XtraEditors.XtraMessageBox.Show(strString,"提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
}
/// <summary>
/// 确认对话框
/// </summary>
/// <param name="strSting">提示内容</param>
public void ShowMessage(string strSting)
{
DevExpress.XtraEditors.XtraMessageBox.Show(strSting,"提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
/// <summary>
/// 确认删除对话框
/// </summary>
/// /// <returns>用户点击结果</returns>
public DialogResult ConfirmDelete()
{
return DevExpress.XtraEditors.XtraMessageBox.Show("确定要删除吗?","提示",MessageBoxButtons.OKCancel,MessageBoxIcon.Question);
}
#endregion
使用用例:
if(this.Confirm("确定要删除吗?") == DialogResult.Cancel)
return;

DevExpress控件学习总结2(转)的更多相关文章

  1. DevExpress控件学习总结(转)

    DevExpress控件学习总结   1.Navigation & Layout 1.1 Bar Manager 如果想在窗体或用户控件(user control)上添加工具条(bars)或弹 ...

  2. DevExpress控件学习总结 z

    1.Navigation & Layout 1.1 Bar Manager 如果想在窗体或用户控件(user control)上添加工具条(bars)或弹出菜单(popup menus),我们 ...

  3. DevExpress控件学习总结

    1.Navigation & Layout 1.1 Bar Manager 如果想在窗体或用户控件(user control)上添加工具条(bars)或弹出菜单(popup menus),我们 ...

  4. DevExpress控件安装、汉化使用教程

    前言 DevExpress是一个庞大的控件库,也很是好用(没用过,听说),但是要收费. 网上关于DevExpress的教程满天飞,我找了一下午也没找到正确的安装.简单实用教程,还是自己摸索吧. 自己动 ...

  5. 【转】DevExpress控件安装

    原文链接: DevExpress控件安装.汉化使用教程 - 田园里的蟋蟀 学习网址: 1.DevExpress控件中文网 2.DevExpress控件中文网使用教程 3.DevExpress控件使用经 ...

  6. Winform DevExpress控件库(一) DevExpress控件库的安装与新建第一个DevExpress项目

    前言:因为这段时间要接触到DevExpress控件库,而我本身甚至对winform的控件都了解甚少,所以处在学习中,写下博客主要是为了方便后期的回顾,当然也可以给一些新人第一次接触时做为学习的参考,以 ...

  7. DevExpress控件安装破解和汉化使用教程

    这段时间因公司业务需要.net开发且需要用到DevExpress控件,我自己研究学习了一下,用的是visual studio(2013)和DevExpress(V14.1.4),VS2013的下载安装 ...

  8. c# devExpress控件 comboBoxEdit,gridControl1,labelcontrol

    一.comboBoxEdit:下拉框 属性 添加项:Properties->items 二.gridControl gridControl与Gridview的区别:前者是容器,后者为视图 2)g ...

  9. DevExpress控件的安装及画图控件的使用

    近期须要绘制纵断面图,而AE自带的又不是非常好,查找资料后使用DevExpress控件中的画图控件实现了纵断面的绘制.Dev控件是须要付费的.这里我们使用破解版的哈. 安装包及破解文件上传至我的网盘了 ...

随机推荐

  1. php获取Linux网卡信息

    $data = exec("/sbin/ifconfig"); var_dump($data); 注意:有时候这种方式获取不到,应该是权限问题 在/var/rootP文件中添加ro ...

  2. css link import

    link和@import的区别   页面中使用CSS的方式主要有3种:行内添加定义style属性值,页面头部内嵌调用和外面链接调用,其中外面引用有两种:link和@import.外部引用CSS两种方式 ...

  3. C++读取excel特定行列中的数据

    可以通过COM API调用才是正解,不过需要编写COM接口类,Excel对象库的接口太多了……不过可以用工具自动生成. 我最近也在用VC操作Excel,在VC中可以这样做,在任何一个cpp文件中加入下 ...

  4. Android安全讲座第九层(二) 内存dump

    近来android上越来越多的应用对自身的保护机制加强了重视,主要表现在几个方面. 1 dex加壳 2 so加壳 3 dex藏在so中,在适当的时候释放. 这是技术上一个进步,并且还有一些专业的公司提 ...

  5. hadoop1.2.1 MultipleOutputs将结果输出到多个文件或文件夹

    hadoop1.2.1 MultipleOutputs将结果输出到多个文件或文件夹 博客分类:http://tydldd.iteye.com/blog/2053867 hadoop   hadoop1 ...

  6. DWR Annotations

    DWR   Annotations DWR 标注是用来代替 dwr.xml 或者与其一同工作的. 1.初始配置 <servlet> <description>DWR contr ...

  7. Left/Right/Inner Join用法和区别

    left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录inner join(等值连接) 只 ...

  8. android bitmap compress(图片压缩)

    android bitmap compress android的照相功能随着手机硬件的发展,变得越来越强大,能够找出很高分辨率的图片. 有些场景中,需要照相并且上传到服务,但是由于图片的大小太大,那么 ...

  9. The 2014 ACMICPC Asia Invitational Xian

    上半年邀请赛的时候真是险而又险地2题拿了个铜,确实其实跟没拿一样......现场前复盘一下,长长记性 [A]签到题 [B]最短路+DFS [C]最短路 [D]构造+欧拉回路 [E]数论,最佳平方逼近 ...

  10. 从url中提取参数名和参数值(转)

    在已知参数名的情况下,获取参数值,使用正则表达式能很容易做到.js的实现方法如下: function getValue(url, name) { var reg = new RegExp('(\\?| ...