本文参考了部分网上资源
设置选中行的背景色、而不改变前景色。
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。
这样的话,运行起来右击表格就可以看到右键菜单了。
二、是否可用设置
在不同情况下,例如选中行的个数以及内容的不同,右键菜单的菜单项是否可用需要作出判断,
这里需要用到gridView的PopupMenuShowing这个事件。也就是在菜单出现之前用户点击右键之后,来判断一下选择了几行,从而决定菜单项是否可用。
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中的MultiSelect为true,也就是允许多选,否则下面的一切都是浮云。
本文通过以下代码实现拖拉多选的功能,主要是编写MouseDown、MouseMove、MouseUp三个函数。
这里需要注意一下GridHitInfo,这个类可以根据x、y坐标获取该点在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;
}
分享到:
相关推荐
vs上面的基本控件满足一般的开发,但是需要做到快速开发和界面友好往住会使用第三方工具,像devExpress就是一个不错的第三方的控件,使用该控件基本上能开发市面上所有的软件,最近对devExpress的GridControl进行了...
devexpress表格控件gridcontrol实现纵向标头,在官网中找到一些案例整理给大家分享
devexpress表格控件gridcontrol实现对列统计,可实现总计,平均,求和等。
一些特殊的项目中会出现禁用行的需求,这里分享一个devexpress表格控件gridcontrol实现禁用特定行的案例
Dev控件中的表格控件GridControl控件非常强大。不过,一些细枝末节的地方有时候用起来不好找挺讨厌的。使用过程中,多半借助Demo和英文帮助文档。网上具体的使用方法也多半零碎。偶遇一个简单而且详细的使用文档。好...
DevExpress GridControl控件使用DevExpress GridControl控件使用DevExpress GridControl控件使用DevExpress GridControl控件使用DevExpress GridControl控件使用
DevExpress中GridControl的属性设置 (只读,得到当前选定记录某字段的值) 及动态绑定数据和全选/取消全选功能。
在winform项目中,使用Devexpress GridControl控件,可能会遇到需要冻结头部几行的需求,本项目实例可以帮到你。
dev空间中GridControl自定义添加列以及不规则列头处理,涉及到列头分组问题
项目中经常会在表格中插入按钮列,图片列,表格列一些非文本的特殊列。如何在devexpress表格控件gridcontrol中实现呢?以下列举一个实现添加图片列,按钮列,时间列,按钮列,开关列的示例。
DevExpress-GridControl新增数据,内附源码、演示(注:只适用于初级人员学习,本人也是刚刚开始学习这个控件)。
有时候需要在Gridcontrol中某一列添加一个小图片,以方便用户点击操作。这个例子是gridcontrol非图片列中添加小图片,进行相关的操作。
在CridControl中根据列表中的记录,根据不同的状态或者判断动态加载不同的图片,以达到不同的状态或者类别记录加载不同的图片,让效果更佳。
用dev控件已经三年了,这款资料比较全面详细介绍第三方控件dev中gridControl控件使用技巧,欢迎大家关注我的博客,我将不定期总结在工作中使用dev技巧及介绍控件高级属性
本文档包含了DevExpress的GridControl控件所有属性的中文说明,大家可以参照本文档对GridControl有更好了解和设置你需要的属性,希望能给大家带来帮助,大家可以踊跃评论,谢谢! 下面是截取的一部分信息: ...
vb.net2010, DevExpress14.1.4,gridcontrol控件获取数据,统计和合计,设置奇、偶行交替颜色,取消不能横向滚动条,全部代码实现,附图。
平台:VS2010 使用GridControl,BindingNavigator实现分页效果
针对DevExpress GridControl GridView 新增行AddNewRow() 很多人加了代码也无法实现添加行或者添加行后InitNewRow这个事件没有触发, 其中主要原因见附件实例代码!
主要介绍了DevExpress实现GridControl列头绘制Checkbox的方法,需要的朋友可以参考下
只能导出导出devexpress插件的GridControl控件中GridView表格中的数据,表格中有什么数据导出什么数据,列顺序也不变。 文件说明: 1.ExportTableExcel.cs:实现导出逻辑的类 2.ExportExcelStyle.cs:导出的...