使用DX写系统的随手笔记(五)

一、ComboBoxEdit

1、  如何使其不可编辑

TextEditStyle 设置为:DisableTextEditor

2、  如何设置鼠标为手形

Cursor 设置为:Hand

二、GridControl

1、  如何解决单击记录整行选中的问题

View->OptionsBehavior->EditorShowMode 设置为:Click

2、  如何新增一条记录

(1)、gridView.AddNewRow()

(2)、实现gridView_InitNewRow事件

3、如何解决GridControl记录能获取而没有显示出来的问题

   gridView.populateColumns();

4、如何让行只能选择而不能编辑(或编辑某一单元格)

   (1)、View->OptionsBehavior->EditorShowMode 设置为:Click

   (2)、View->OptionsBehavior->Editable 设置为:false

5、如何禁用GridControl中单击列弹出右键菜单

   设置Run Design->OptionsMenu->EnableColumnMenu 设置为:false

6、如何隐藏GridControl的GroupPanel表头

   设置Run Design->OptionsView->ShowGroupPanel 设置为:false

7、如何禁用GridControl中列头的过滤器

   过滤器如下图所示:

   设置 Run Design->OptionsCustomization->AllowFilter 设置为:false

8、如何在查询得到0条记录时显示自定义的字符提示/显示

   如图所示:

方法如下:

   //When no Records Are Being Displayed

        private void gridView1_CustomDrawEmptyForeground(object sender, CustomDrawEventArgs e)

        {

            //方法一(此方法为GridView设置了数据源绑定时,可用)

            ColumnView columnView = sender as ColumnView;

            BindingSource bindingSource = this.gridView1.DataSource as BindingSource;

            if(bindingSource.Count == 0)

            {

                string str = "没有查询到你所想要的数据!";

                Font f = new Font("宋体", 10, FontStyle.Bold);

                Rectangle r = new Rectangle(e.Bounds.Top + 5, e.Bounds.Left + 5, e.Bounds.Right - 5, e.Bounds.Height - 5);

                e.Graphics.DrawString(str, f, Brushes.Black, r);

            }

            //方法二(此方法为GridView没有设置数据源绑定时,使用,一般使用此种方法)

            if (this._flag)

            {

                if (this.gridView1.RowCount == 0)

                {

                    string str = "没有查询到你所想要的数据!";

                    Font f = new Font("宋体", 10, FontStyle.Bold);

                    Rectangle r = new Rectangle(e.Bounds.Left + 5, e.Bounds.Top + 5, e.Bounds.Width - 5, e.Bounds.Height - 5);

                    e.Graphics.DrawString(str, f, Brushes.Black, r);

                }

            }

   }

9、如何显示水平滚动条?

   设置this.gridView.OptionsView.ColumnAutoWidth = false;

10、如何定位到第一条数据/记录?

   设置 this.gridView.MoveFirst()

11、如何定位到下一条数据/记录?

   设置 this.gridView.MoveNext()

12、如何定位到最后一条数据/记录?

   设置 this.gridView.MoveLast()

13、设置成一次选择一行,并且不能被编辑

        this.gridView1.FocusRectStyle = DevExpress.XtraGrid.Views.Grid.DrawFocusRectStyle.RowFocus;

          this.gridView1.OptionsBehavior.Editable = false;

     this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;

14、如何显示行号?

   this.gridView1.IndicatorWidth = 40;

       //显示行的序号

        private void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)

        {

            if (e.Info.IsRowIndicator && e.RowHandle>=0)

            {

                e.Info.DisplayText = (e.RowHandle + 1).ToString();

            }

   }

15、如何让各列头禁止移动?

    设置gridView1.OptionsCustomization.AllowColumnMoving = false;

16、如何让各列头禁止排序?

    设置gridView1.OptionsCustomization.AllowSort = false;

17、如何禁止各列头改变列宽?

    设置gridView1.OptionsCustomization.AllowColumnResizing = false;

三、navBarControl

1、如何在每一个navBarGroup里添加自己想要的控件

   设置GroupStyle: ControlContainer

2、如何设置navBarGroup有滚动条

   设置SkinExplorerBarViewScrollStyle:ScrollBar

3、  如休把navBarGroup设置成如下样式

如图所示:

   设置navBarGroup的PaintStyleName属性为: SkinNavigationPane

四、toolTipController

效果图如下:

1、如何设置显示的时间长短

   设置this.toolTipController1.AutoPopDelay = 2000;

2、如何在屏幕上显示如上图所示的效果

           ToolTipControllerShowEventArgs args = this.toolTipController1.CreateShowArgs();

           this.toolTipController1.SetToolTip(this.sbtnYes, "请选择一条记录!");

           this.toolTipController1.SetTitle(this.sbtnYes, "提示");

           this.toolTipController1.SetToolTipIconType(this.sbtnYes, DevExpress.Utils.ToolTipIconType.Exclamation);

           this.toolTipController1.ShowBeak = true;

           this.toolTipController1.ShowShadow = true;

           this.toolTipController1.Rounded = true;

           this.toolTipController1.ShowHint("请选择一条记录!", "提示");                  

           args.ToolTip = "请选择一条记录!";

   args.Title = "提示";   

3、如何设置边框的颜色

   this.toolTipController1.Appearance.BorderColor = Color.Red;

五、TextEdit

1、如何设置TextEdit为多行,可拉伸

   设置TextEdit的Propertity->AutoHeight为:False

六、LayoutControl

        1、如何设置LayoutItem为隐藏

           设置LayoutItem.Visibility  = Never

七、TreeList

1、如何隐藏TreeList的列头

   设置TreeListr的OptionsView的ShowColumns属性为:False

2、如何

八、PictureEdit

1、如何禁止PictureEdit的右键菜单?

设置PictureEdit的Properties->ShowMenu为:false

九、TreeList

1、  如何让TreeList的每个结点高亮显示?

效果如下:

代码如下:

private void treeList1_CustomDrawNodeCell(object sender, DevExpress.XtraTreeList.CustomDrawNodeCellEventArgs e)

        {

            TreeList node = sender as TreeList;

            if (e.Node == node.FocusedNode)

            {

                e.Graphics.FillRectangle(SystemBrushes.Window, e.Bounds);

                Rectangle r = new Rectangle(e.EditViewInfo.ContentRect.Left,

                                            e.EditViewInfo.ContentRect.Top,

                                            Convert.ToInt32(e.Graphics.MeasureString(e.CellText,                                                                treeList1.Font).Width + 1),

                                            Convert.ToInt32(e.Graphics.MeasureString(e.CellText,treeList1.Font).Height));

                e.Graphics.FillRectangle(SystemBrushes.Highlight, r);

                e.Graphics.DrawString(e.CellText, treeList1.Font, SystemBrushes.HighlightText, r);

                e.Handled = true;

            }

        }

//============================================================================

//===============================以下内容为收集===============================

//============================================================================

一、改变grid的样式。

DevExpress.XtraGrid.Design.XAppearances xapp;

xapp=new DevExpress.XtraGrid.Design.XAppearances(System.Environment.GetFolderPath(System.Environment.SpecialFolder.System) + "\\DevExpress.XtraGrid.Appearances.xml ");

xapp.LoadScheme(“样式名字”, gridControl1.MainView);

二、选择单元设置和取所选的值

     gridView1.OptionsSelection.MultiSelect = ceMultiSelect.Checked; //多行选择

     gridView1.OptionsSelection.MultiSelectMode= GridMultiSelectMode.CellSelect;

     gridView1.OptionsSelection.MultiSelectMode= GridMultiSelectMode. RowSelect; //

三、gridview的控制

///<取当前选中的值>

        string GetSelectedRows(GridView view) {

            string ret = "";

            int rowIndex = -1;

            if(view.OptionsSelection.MultiSelectMode == GridMultiSelectMode.RowSelect) {

                foreach(int i in gridView1.GetSelectedRows()) {

                    DataRow row = gridView1.GetDataRow(i);

                    if(ret != "") ret += "\r\n";

                    ret += string.Format("Company Name: {0} (#{1})", row["CompanyName"], i);

                }

            }

            else {

                foreach(GridCell cell in view.GetSelectedCells()) {

                    if(rowIndex != cell.RowHandle) {

                        if(ret != "") ret += "\r\n";

                        ret += string.Format("Row: #{0}", cell.RowHandle);

                    }

                    ret += "\r\n    " + view.GetRowCellDisplayText(cell.RowHandle, cell.Column);

                    rowIndex = cell.RowHandle;

                }

            }

            return ret;

        }

///<设置选中的颜色>//半透明的效果

  private void icbTranslucentColors_CheckedChanged(object sender, System.EventArgs e) {

            if(icbTranslucentColors.Checked) {

                gridView1.Appearance.SelectedRow.BackColor = Color.FromArgb(30, 0, 0, 240);

                gridView1.Appearance.FocusedRow.BackColor = Color.FromArgb(60, 0, 0, 240);

            }

            else {

                gridView1.Appearance.SelectedRow.Reset();

                gridView1.Appearance.FocusedRow.Reset();

            }

        }

///<自动添加一行>

gridView1.OptionsView.NewItemRowPosition =  NewItemRowPosition.Bottom//Top/None;

///<设置gridView的按钮>

    gridView1.ShowButtonMode = ShowButtonModeEnum.。。。。。。

      gridView1.OptionsBehavior.Editable = chEdit.Checked; //设置按钮是否可用

///向选中的空间输入字符串

SendKeys.Send(“fsfds”);

///控件焦点

gridControl1.Focus();

四、cardView的设置

///是否现实快捷按钮CustomizeButton

cardView1.OptionsView.ShowQuickCustomizeButton=true/false;

///设置CustomizeButton的能否排序和过滤

foreach(GridColumn col in cardView1.Columns)

            {   col.OptionsColumn.AllowSort}

foreach(GridColumn col in cardView1.Columns)

              {  col.OptionsFilter.AllowFilter}

///card的头上的ico显示

cardView1.LayoutChanged();

///card的头上的标题改变显示

cardView1.CardCaptionFormat =””;

///cardview显示的单个记录的折叠按钮

cardView1.OptionsView.ShowCardExpandButton=true;

///

cardView1.MaximumCardColumns =iSize

cardView1.MaximumCardRows = val;

cardView1.OptionsBehavior.AutoHorzWidth

///多选

cardView1.OptionsSelection.MultiSelect = ceMultiSelect.Checked;

foreach(int i in cardView1.GetSelectedRows()) {

                DataRow row = cardView1.GetDataRow(i);

                if(ret != "") ret += "\r\n";

                ret += string.Format("{0} / {1} : {2:$#,0.00}", row["Trademark"], row["Model"], row["Price"]);

            }///查看选择中的记录

CellMerging(单元格合并的效果)

///

CellMerging(单元格合并的效果)

gridView1.OptionsView.AllowCellMerge = ceMerging.Checked;

Fixed Bands(bandedGridView)

///两边固定

gridBand3 的一列的Fixed属性改成 Right,Left,None

///固定与非固定列之间的距离用

bandedGridView2.FixedLineWidth = (int)numFixedLineWidth.Value;

///设置列的颜色

l   打开Run Designer 选中Columns 选中要改变的列 里面有AppearanceCell (设置列的外观)和 AppearanceHeader(设置表格头的外观)

l   或者选中该列查看“属性”里面也有这两个属性。

///统计 (gridView bandedGridView通用)

分组统计和全部统计:

全部统计:在最下面显示统计的结果。

        Run Designer->Total Summary //->General 设置显示       

                                    //->Columns 对特定列来设置统计

汇总结果是否显示:可以通过gridControl的view的ShowFooter属性来设置表格下面的汇总结果

分组统计:

以上就是“分组”的显示在每个分组下面来显示汇总结果。

通过bandedGridView2.GroupFooterShowMode= GroupFooterShowMode.。。。。设置分组的显示模式。

///GridView设置菜单

         #region Grid events

         private void gridView1_ShowGridMenu(object sender, DevExpress.XtraGrid.Views.Grid.GridMenuEventArgs e) {

              if(e.MenuType == DevExpress.XtraGrid.Views.Grid.GridMenuType.Column) {

                   DevExpress.XtraGrid.Menu.GridViewColumnMenu menu = e.Menu as DevExpress.XtraGrid.Menu.GridViewColumnMenu;

                   menu.Items.Clear();

                   if(menu.Column != null) {

                       menu.Items.Add(CreateCheckItem("Not Fixed", menu.Column, FixedStyle.None, imageList2.Images[0]));

                       menu.Items.Add(CreateCheckItem("Fixed Left", menu.Column, FixedStyle.Left, imageList2.Images[1]));

                       menu.Items.Add(CreateCheckItem("Fixed Right", menu.Column, FixedStyle.Right, imageList2.Images[2]));

                   }

              }

         }

         #endregion

         #region New column menu

         DXMenuCheckItem CreateCheckItem(string caption, GridColumn column, FixedStyle style, Image image) {

              DXMenuCheckItem item = new DXMenuCheckItem(caption, column.Fixed == style, image, new EventHandler(OnFixedClick));

              item.Tag = new MenuInfo(column, style);

              return item;

         }

         void OnFixedClick(object sender, EventArgs e) {

              DXMenuItem item = sender as DXMenuItem;

              MenuInfo info = item.Tag as MenuInfo;

              if(info == null) return;

              info.Column.Fixed = info.Style;

         }

         class MenuInfo {

              public MenuInfo(GridColumn column, FixedStyle style) {

                   this.Column = column;

                   this.Style = style;

              }

              public FixedStyle Style;

              public GridColumn Column;

         }

#endregion

///gridview cardView自动行高

l   行高自动匹配

  gridView1.OptionsView.RowAutoHeight = ce.Checked;

  cardView1.OptionsBehavior.FieldAutoHeight = ce.Checked;

l   当文字多的时候(行高自动匹配 设置是才有用)

     repositoryItemMemoEdit1.LinesCount = ce.Checked ? 0 : 1;

     设置自动全部显示该的所有行。

l   图片时(行高自动匹配 设置是才有用)

     repositoryItemPictureEdit1.CustomHeight = ce.Checked ? 0 : 40;

///BandedGridView自己订制列的方法

advBandedGridView1.ColumnsCustomization();

advBandedGridView1.DestroyCustomization();

advBandedGridView1.OptionsCustomization.AllowChangeColumnParent = edit.Checked;

advBandedGridView1.OptionsCustomization.AllowChangeBandParent = edit.Checked;

advBandedGridView1.OptionsCustomization.ShowBandsInCustomizationForm = edit.Checked;

///设置 图片动画模式

gridView1.OptionsView.AnimationType = (GridAnimationType)

///根据字段来分组模式

switch(index) {

                       case 0:

                            SetInterval(gridColumn1, ColumnGroupInterval.Alphabetical);

                            gridColumn2.GroupInterval = ColumnGroupInterval.Alphabetical;

                            break;

                       case 1:

                            SetInterval(gridColumn5, ColumnGroupInterval.DateMonth);

                            break;

                       case 2:

                            SetInterval(gridColumn5, ColumnGroupInterval.DateYear);

                            break;

                       case 3:

                            SetInterval(gridColumn5, ColumnGroupInterval.DateRange);

                            break;

                       case 4:

                            SetSortMode(gridColumn4, ColumnSortMode.Custom);

                            break;

                       default:

                            SetInterval(gridColumn2, ColumnGroupInterval.Value);

                            break;

                                          }

     void SetInterval(GridColumn column, ColumnGroupInterval interval) {

              column.GroupInterval = interval;

              column.GroupIndex = 0;

         }

         void SetSortMode(GridColumn column, ColumnSortMode sortMode) {

              column.SortMode = sortMode;

              column.GroupIndex = 0;

         }

改变分组样式

gridView1.OptionsView.GroupDrawMode = (GroupDrawMode)

///清除分组

gridView1.ClearGrouping();

foreach(GridColumn column in gridView1.Columns) {

                       column.GroupInterval = ColumnGroupInterval.Default;

                       column.SortMode = ColumnSortMode.Default;

                                          }

///CustomDataSummaries设置Grop

private void numCustom_ValueChanged(object sender, System.EventArgs e) {

            CustomGridView.UpdateSummary();

            UpdateCaptions(numCustom.Value);

        }

        private void UpdateCaptions(decimal d) {

            CustomGridView.GroupSummary[0].DisplayFormat = "(Order Count [WHERE Freight >= " + d.ToString() + "] = {0})";

            OnSetCaption("");

            gridView2.FormatConditions[0].Value1 = d;

        }

        protected override void OnSetCaption(string fCaption) {

            fCaption = "count records WHERE Freight >= " + numCustom.Value.ToString();

            if(Caption != null)

                Caption.Text = string.Format("{0} ({1})", TutorialName, fCaption);

        }

///下面的效果的实现

Run Designere -> Style Conditions ->Add ->column设置列的 Condition设置条件 value1,value2是参数值

代码:

   public void setStyle(GridView gridView)

        {

            StyleFormatCondition cn;

            cn = new StyleFormatCondition(FormatConditionEnum.Equal, gridView.Columns["bd_c"], null,false);

            cn.ApplyToRow = true;//false只对列其作用。

            cn.Appearance.Font = new Font(AppearanceObject.DefaultFont, FontStyle.Bold);

            cn.Appearance.ForeColor = Color.Brown;

            gridView.FormatConditions.Add(cn);

        }

///LayoutView

layoutView1.OptionsCarouselMode.PitchAngle = (float)(((int)flatFactor.EditValue) /360.0f* 2 * Math.PI);///卡片的高度设置flatFactor.EditValue的值(0-360)

layoutView1.OptionsCarouselMode.RollAngle = (float)(((int)rollAngle.EditValue) /360.0f* 2 * Math.PI);// ///卡片的旋转角度设置rollAngle.EditValue的值(0-360)

layoutView1.OptionsCarouselMode.BottomCardScale = ((int)endSizeScale.EditValue) /100.0f;

///卡片的距离设置endSizeScale.EditValue的值(0-100)

layoutView1.OptionsCarouselMode.BottomCardAlphaLevel = ((int)endAlpha.EditValue) /100.0f;

///卡片的卡片透明程度设置endAlpha.EditValue的值(0-100)

  layoutView1.OptionsCarouselMode.BottomCardFading = ((int)bottomCardFading.EditValue) /100.0f; ///卡片的卡片褪色程度设置bottomCardFading.EditValue的值(0-100)

layoutView1.OptionsCarouselMode.CardCount = (int)cardsCount.EditValue;

///卡片的能显示数量设置cardsCount.EditValue的值(0-20)

layoutView1.OptionsCarouselMode.InterpolationMode = (InterpolationMode)

//修改卡片的方式

///layout卡片的样式在 run designer -> layout里面设置

  Size originalCardMinSize = Size.Empty;

        private void zoomTrackBarControl1_EditValueChanged(object sender, EventArgs e) {

            if(originalCardMinSize == Size.Empty) originalCardMinSize = layoutView1.CardMinSize;

            double koeff = ((int)zoomTrackBarControl1.EditValue) / 100.0 - 0.2;

            Size newSize = new Size(originalCardMinSize.Width + (int)(originalCardMinSize.Width * koeff), originalCardMinSize.Height + (int)(originalCardMinSize.Height * koeff));

            layoutView1.CardMinSize = newSize;

        }////设置卡片的大小的(zoomTrackBarControl1z(0-100))

下图中设置layoutView位置的方法

  protected void SetMasterTableLeftPlacement() {

            LayoutItemDragController dc = new LayoutItemDragController(masterTableItem, detailTableItem, InsertLocation.Before, LayoutType.Horizontal);

            DoDragItem(dc);

            SetMasterViewColumnLayout();

        }

        protected void SetMasterTableRightPlacement() {

            LayoutItemDragController dc = new LayoutItemDragController(masterTableItem, detailTableItem, InsertLocation.After, LayoutType.Horizontal);

            DoDragItem(dc);

            SetMasterViewColumnLayout();

        }

        private void SetMasterTableTopPlacement() {

            LayoutItemDragController dc = new LayoutItemDragController(masterTableItem, detailTableItem, InsertLocation.Before, LayoutType.Vertical);

            DoDragItem(dc);

            SetMasterViewRowLayout();

        }

        protected void SetMasterTableBottomPlacement() {

            LayoutItemDragController dc = new LayoutItemDragController(masterTableItem, detailTableItem, InsertLocation.After, LayoutType.Vertical);

            DoDragItem(dc);

            SetMasterViewRowLayout();

        }

        protected void DoDragItem(LayoutItemDragController dc) {

            masterTableItem.SizeConstraintsType = DevExpress.XtraLayout.SizeConstraintsType.Default;

            masterTableItem.Move(dc);

        }

        protected void SetMasterViewColumnLayout() {

            SetMasterItemVerticalSize();

            employesLayoutView.OptionsBehavior.AllowSwitchViewModes = true;

            employesLayoutView.OptionsView.ViewMode = LayoutViewMode.Column;

            employesLayoutView.OptionsBehavior.AllowSwitchViewModes = false;

            employesLayoutView.Refresh();

        }

        protected void SetMasterViewRowLayout() {

            SetMasterItemHorizontalSize();

            employesLayoutView.OptionsBehavior.AllowSwitchViewModes = true;

            employesLayoutView.OptionsView.ViewMode = LayoutViewMode.Row;

            employesLayoutView.OptionsBehavior.AllowSwitchViewModes = false;

            employesLayoutView.Refresh();

        }////  private DevExpress.XtraLayout.LayoutControlItem masterTableItem;

///直接打印gridcontrol

Cursor currentCursor = Cursor.Current;

Cursor.Current = Cursors.WaitCursor; //取当前的鼠标。并设置

if(DevExpress.XtraPrinting.PrintHelper.IsPrintingAvailable)

DevExpress.XtraPrinting.PrintHelper.ShowPreview(gridControl1);///打印

else

MessageBox.Show("XtraPrinting Library is not found...", "Information", MessageBoxButtons.OK, MessageBoxIcon.Information);

Cursor.Current = currentCursor;

posted on 2012-03-04 20:02  瑟沙埔  阅读(763)  评论(0编辑  收藏  举报

导航