DevExpress控件GridControl使用 z

设置选中行的背景色、而不改变前景色。

EnableAppearanceFocusedCell = False, EnableAppearanceFocusedRow = False

private void gdvMarket_RowCellStyle(object sender, RowCellStyleEventArgs e)

        {

            if (e.RowHandle == gdvMarket.FocusedRowHandle)

            {

                

               e.Appearance.BackColor=Color.CadetBlue;

              ;

            }

        }

单元格颜色的设置

//最低价颜色控制



            DevExpress.XtraGrid.StyleFormatCondition lowPrice = new DevExpress.XtraGrid.StyleFormatCondition();

            lowPrice.Column = LowPrice;

            lowPrice.Appearance.ForeColor = Color.Red;

            lowPrice.Appearance.Options.UseForeColor = true;

            lowPrice.Condition = DevExpress.XtraGrid.FormatConditionEnum.Expression;

            lowPrice.Expression = "[LowPrice] > [PrevPrice]";

                this.gdvMarket.FormatConditions.Add(lowPrice);



            //涨跌颜色控制

            DevExpress.XtraGrid.StyleFormatCondition range = new DevExpress.XtraGrid.StyleFormatCondition();

            range.Column = Range;

            range.Appearance.ForeColor = Color.Red;

            range.Appearance.Options.UseForeColor = true;

            range.Condition = DevExpress.XtraGrid.FormatConditionEnum.Greater;

            range.Value1 = 0;

                this.gdvMarket.FormatConditions.Add(range);

单元格字符格式化方式

this.gdvMarket.Columns["RangePercent"].DisplayFormat.FormatType = DevExpress.Utils.FormatType.Custom;

               this.gdvMarket.Columns["RangePercent"].DisplayFormat.FormatString = "{0}%";

设置列背景色

            this.gdvMarket.Columns["Amount"].AppearanceCell.BackColor = Color.AliceBlue;

                this.gdvMarket.Columns["Amount"].AppearanceCell.Options.UseBackColor = true;

GridView右键菜单

一、添加右键菜单

1.VS工具箱中的菜单和工具栏找到ContextMenuStrip控件,双击添加。

2.点击ContextMenuStrip右上方的小三角形,打开编辑项,可以添加菜单项。至于菜单点击事件,这里就不多说了。

3.选择gridControl(注意这里不是gridView的属性),在属性中可以找到ContextMenuStrip属性,设置成刚添加的ContextMenuStrip

这样的话,运行起来右击表格就可以看到右键菜单了。

二、是否可用设置

在不同情况下,例如选中行的个数以及内容的不同,右键菜单的菜单项是否可用需要作出判断,

这里需要用到gridViewPopupMenuShowing这个事件。也就是在菜单出现之前用户点击右键之后,来判断一下选择了几行,从而决定菜单项是否可用。

 

private void gridView_PopupMenuShowing(object sender, DevExpress.XtraGrid.Views.Grid.PopupMenuShowingEventArgs e)

        {

            //获取选择的行数

            int select = gridView.SelectedRowsCount;

            itemOpen.Enabled = false;

            itemDelete.Enabled = false;

            if(select == 1)

            {

                itemOpen.Enabled = true;

                itemDelete.Enabled = true;

            }

            else if(select > 1)

            {

                itemDelete.Enabled =true;

            }

       }

 

实现拖拽多选

GridView可以通过Shift键或Ctrl键以及Ctrl+A快捷键实现多选,但是默认不支持拖拽多选,好像也没有设置的方法。这样虽然没什么问题,但是肯定会给用户带来不便。
首先要设置OptionsSelection中的MultiSelecttrue,也就是允许多选,否则下面的一切都是浮云。

本文通过以下代码实现拖拉多选的功能,主要是编写MouseDownMouseMoveMouseUp三个函数。

这里需要注意一下GridHitInfo,这个类可以根据xy坐标获取该点在GridView中的相关信息,例如在哪行哪列哪个单元格内,或者是否在单元格里。

 

 //用于记录,鼠标是否已按下

        bool isMouseDown = false;



        //用于鼠标拖动多选,标记是否记录开始行

        bool isSetStartRow = false;



        //用于鼠标拖动多选,记录开始行

        private int StartRowHandle = -1;



        //用于鼠标拖动多选,记录现在行

        private int CurrentRowHandle = -1;



        //用于实现鼠标拖动选择多行功能中的一个方法,对单元格区域进行选中

        private void SelectRows(int startRow, int endRow)

        {

            if (startRow > -1 && endRow > -1)

            {

                gridView.BeginSelection();

                gridView.ClearSelection();

                gridView.SelectRange(startRow, endRow);

                gridView.EndSelection();

            }

        }



        //实现鼠标拖动选择多行 ,鼠标按下事件

        private void gridView_MouseDown(object sender, MouseEventArgs e)

        {

            if (e.Button == MouseButtons.Left)

            {

                isMouseDown = true;

            }

        }



        //实现鼠标拖动选择多行 ,鼠标移动时

        private void gridView_MouseMove(object sender, MouseEventArgs e)

        {

            if (isMouseDown)

            {

                GridHitInfo info = gridView.CalcHitInfo(e.X, e.Y);

                //如果鼠标落在单元格里

                if (info.InRow)

                {

                    if (!isSetStartRow)

                    {

                        StartRowHandle = info.RowHandle;

                        isSetStartRow = true;

                    }

                    else

                    {

                        //获得当前的单元格

                        int newRowHandle = info.RowHandle;

                        if (CurrentRowHandle != newRowHandle)

                        {

                            CurrentRowHandle = newRowHandle;

                            //选定 区域 单元格

                            SelectRows( StartRowHandle, CurrentRowHandle);

                        }

                    }

                }

            }

        }



        //实现鼠标拖动选择多行 ,鼠标放开时

        private void gridView_MouseUp(object sender, MouseEventArgs e)

        {

            StartRowHandle = -1;

            CurrentRowHandle = -1;

            isMouseDown = false;

            isSetStartRow = false;

        }

 修改列的背景色

DevExpress.XtraGrid.StyleFormatCondition cn;

cn = new DevExpress.XtraGrid.StyleFormatCondition(DevExpress.XtraGrid.FormatConditionEnum.Equal, GridView1.Columns["列名"], null, 0);

cn.Appearance.BackColor = Color.Red;

GridView1.FormatConditions.Add(cn);

cn = new DevExpress.XtraGrid.StyleFormatCondition(DevExpress.XtraGrid.FormatConditionEnum.Equal, GridView1.Columns["列名"], null, 1);

cn.Appearance.BackColor = Color.Green;

GridView1.FormatConditions.Add(cn);

这样,这列如果值为0则是红色,为1则是绿色

去除”Drag a Column Header Here To Group by that Column”

 

DevExpress控件GridControl使用 z

 

Views-OptionsView-ShowGroupPanel=False

 

禁用GridControl中列头的过滤器

 

过滤器如下图所示:
设置 Run Design->OptionsCustomization->AllowFilter 设置为:false

 

显示水平滚动条?

 

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

 

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

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

          this.gridView1.OptionsBehavior.Editable = false;

     this.gridView1.OptionsSelection.EnableAppearanceFocusedCell = false;

显示行号?

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();

            }

   }

让各列头禁止移动?

    设置gridView1.OptionsCustomization.AllowColumnMoving = false;

让各列头禁止排序?

    设置gridView1.OptionsCustomization.AllowSort = false;

禁止各列头改变列宽?

    设置gridView1.OptionsCustomization.AllowColumnResizing = false;

设置单元格自动换行?

1.ColumnEdit 增加 MemoEdit

2.AppearanceCell-TextOptions- WordWrap

3.OptionsView RowAutoHeight

设置每一列对齐方式?

View-Appearance-Row-TextOptions-(HAlignment = Center, VAlignment = Center)

设置行只读属性?

GridView.OptionsBehavior-Editable(false)

 

 

你可能感兴趣的:(DevExpress)