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); } } } 1、皮膚 DexExpress的控件都有本身的樣式,有很多的皮膚,然而怎樣讓一個System.Windows.Forms.Form窗口換膚了,有沒有辦法呢?用DexExpress是沒有什麼簡單辦法的,若是你要讓窗體都換膚,只有用DevExpress.XtraEditors.XtraForm一條路了。用它後,還需在Pragram.cs中的Application.Run以前寫上一句:DevExpress.Skins.SkinManager.EnableFormSkins();這樣就差很少了。點此處見參考資料! 2、樣式設置有訣竅 DexExpress的控件都有一個LookAndFeel屬性,這個屬性有兩個屬性:SkinName、Style,可是,咱們若是隻設置這兩個,結果設置來設置去都沒有反映,這是怎麼回事,DexExpress說,去看Demo吧,日,看demo是大海撈針啊,那麼多屬性,誰曉得是哪兒出了問題。。怎麼解決呢?LookAndFeel還有一個UseDefaultLookAndFeel屬性,它默認值是true,請將它設爲false便可。這是什麼緣由呢?爲何要這麼作呢?DexExpress有一個組件:DefaultLookAndFeel,它的用法是拖到窗體上就是了,而後你修改它的LookAndFeel屬性就是了,修改了它,那麼此窗體上全部UseDefaultLookAndFeel爲true的控件都用上了相同的樣式。DevExpress的這個思想是蠻好的。這樣作好處極大,不再用一個控件一個控件地設置。有個別例外,就單獨設置。 另外,我還注意到DevExpress有幾個相似的控件,如: DefaultToolTipControler、StyleController。它們的用意都集體管理界面風格。 點此處進見參考資料! 3、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; 4、選項卡式子窗口 這個問題在前面已經講了,可是還有一個問題,怎樣實現雙擊選項卡時就關閉對應的窗口呢?就你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之間的時間差來達到識別雙擊的目的。 5、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;