登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

涤心斋

淡泊以明志,宁静以致远!

 
 
 

日志

 
 

DexExpress总结  

2008-07-22 14:07:51|  分类: DevExpress |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
  有位兄弟说得好:DevExpress的教程、资料就好比我口袋中的钱,一样的少。我好不容易到了一些资料,再又自己实验了一下。有一些体会,现在记录下来,以防以后要用又忘了这些关键了。
  一、皮肤
  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死了。
  四、选项卡式子窗口
  这个问题在前面已经讲了,但是还有一个问题,怎样实现双击选项卡时就关闭对应的窗口呢?就你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。
  评论这张
 
阅读(2049)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018