①修改GridView的标题背景颜色;
②修改选中行的背景颜色;
③修改指定行的背景颜色;
④修改指定列的背景颜色;
⑤修改指定单元格的背景颜色;
⑥获取GridView表格选中行的数据信息;
⑦获取GridView的标题头名称、字段;
⑧修改GridView的标题头名称;
/*** * Title:"Winfrom" 项目 * 主题:GridControl帮助类 * Description: * 功能: * 0、官网:https://docs.devexpress.com/WindowsForms/115548/controls-and-libraries/data-grid/appearance-and-conditional-formatting * 1、设置表格标题背景颜色 * 2、设置选中行颜色 * 3、设置奇偶行背景颜色 * 4、设置表格指定行列的背景色 * 5、获取到GridView的所有字段 * 6、获取到GridView的所有备注名称 * 7、修改表格指定的标题头名称 * 8、给GridControl组件填充内容 * Date:2021 * Version:0.1版本 * Author:Coffee * Modify Recoder: */ using DevExpress.XtraGrid; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Grid; using System; using System.Collections.Generic; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Utils { class GridControlHelper { /// <summary> /// 设置表格标题背景颜色 /// </summary> /// <param name="gridView">gridView组件</param> /// <param name="columnIndex">表格列索引</param> /// <param name="color">颜色</param> public static void SetGridViewHeaderBackColor(GridView gridView, int columnIndex, Color color) { if (gridView != null && gridView.Columns.Count>0 && columnIndex >= 0) { gridView.Columns[columnIndex].AppearanceHeader.BackColor = color; } } /// <summary> /// 设置表格标题背景颜色 /// </summary> /// <param name="gridView">gridView组件</param> /// <param name="columnIndex">表格列索引</param> /// <param name="color">颜色</param> public static void SetGridViewHeaderBackColor(GridView gridView, string columnName, Color color) { if (gridView != null && gridView.Columns.Count > 0 && !string.IsNullOrEmpty(columnName)) { gridView.Columns[columnName].AppearanceHeader.BackColor = color; } } /// <summary> /// 设置选中行颜色 /// </summary> /// <param name="gridView">GridView组件</param> public static void SetSelectedRowColor(GridView gridView, Color selectedRowColor, Color focusedColor) { gridView.Appearance.SelectedRow.BackColor = selectedRowColor; gridView.Appearance.FocusedRow.BackColor = focusedColor; } /// <summary> /// 设置奇偶行背景颜色,统一风格 /// </summary> /// <param name="gridView">gridView组件</param> /// <param name="oddColor">奇数行颜色</param> /// <param name="evenColor">偶数行颜色</param> public static void SetOddEvenRowColor(GridView gridView, Color oddColor, Color evenColor) { gridView.Appearance.OddRow.BackColor = oddColor; gridView.Appearance.EvenRow.BackColor = evenColor; gridView.OptionsView.EnableAppearanceOddRow = true; gridView.OptionsView.EnableAppearanceEvenRow = true; } /// <summary> /// 设置表格指定行列的背景色 /// </summary> /// <param name="gridView">gridView组件</param> /// <param name="columnIndex">列索引</param> /// <param name="backColor">列的背景颜色1</param> /// <param name="backColor2">列的背景颜色2</param> /// <param name="foreColor">聚焦时颜色</param> public static void SetGridColumnBackColor(GridView gridView,int columnIndex, Color backColor, Color backColor2, Color foreColor) { if (gridView != null && columnIndex >= 0) { GridColumn colID = gridView.Columns[columnIndex]; colID.AppearanceCell.BackColor = backColor; colID.AppearanceCell.BackColor2 = backColor2; colID.AppearanceCell.ForeColor = foreColor; } } /// <summary> /// 设置表格指定行列的背景色 /// </summary> /// <param name="gridView">gridView组件</param> /// <param name="columnIndex">列索引</param> /// <param name="backColor">列的背景颜色1</param> /// <param name="backColor2">列的背景颜色2</param> /// <param name="foreColor">聚焦时颜色</param> public static void SetGridColumnBackColor(GridView gridView, string columnFieldName, Color backColor, Color backColor2, Color foreColor) { if (gridView != null && !string.IsNullOrEmpty(columnFieldName)) { GridColumn colID = gridView.Columns[columnFieldName]; colID.AppearanceCell.BackColor = backColor; colID.AppearanceCell.BackColor2 = backColor2; colID.AppearanceCell.ForeColor = foreColor; } } /// <summary> /// 获取到GridView的所有字段 /// </summary> /// <param name="gridView">GridView组件</param> /// <returns></returns> public static List<string> GetAllFieldOfGrirdView(GridView gridView) { List<string> tmpList = new List<string>(); if (gridView != null && gridView.Columns.Count > 0) { int count = gridView.Columns.Count; for (int i = 0; i < count; i++) { tmpList.Add(gridView.Columns[i].FieldName); } } return tmpList; } /// <summary> /// 获取到GridView的所有备注名称 /// </summary> /// <param name="gridView">GridView组件</param> /// <returns></returns> public static List<string> GetAllCaptionOfGrirdView(GridView gridView) { List<string> tmpList = new List<string>(); if (gridView != null && gridView.Columns.Count > 0) { int count = gridView.Columns.Count; for (int i = 0; i < count; i++) { tmpList.Add(gridView.Columns[i].Caption); } } return tmpList; } /// <summary> /// 修改表格指定的标题头名称 /// </summary> /// <param name="gridView">GirdView表格</param> /// <param name="columnIndex">需要修改列标题名称的索引</param> /// <param name="headerName">修改后的列标题的名称</param> public static void ModifyGridViewTitleHeader(GridView gridView, int columnIndex, string headerName) { if (gridView != null && columnIndex > 0 && !string.IsNullOrEmpty(headerName)) { gridView.Columns[columnIndex].Caption = headerName; } } /// <summary> /// 修改表格指定的标题头名称 /// </summary> /// <param name="gridView">GirdView表格</param> /// <param name="columnName">需要修改列标题名称的字段名</param> /// <param name="headerName">修改后的列标题的名称</param> public static void ModifyGridViewTitleHeader(GridView gridView, string columnName, string headerName) { if (gridView != null && !string.IsNullOrEmpty(columnName) && !string.IsNullOrEmpty(headerName)) { gridView.Columns[columnName].Caption = headerName; } } /// <summary> /// 给GridControl组件填充内容 /// </summary> /// <param name="gridControl">gridControl组件名称</param> /// <param name="gridView">gridView组件名称</param> /// <param name="dataTable">dataTable数据</param> public static void FillDatasToGridControl(GridControl gridControl, GridView gridView, DataTable dataTable) { gridControl.DataSource = dataTable; gridControl.Refresh(); gridView.BestFitColumns(); } }//Class_end }
3.1、修改背景颜色使用GirdView的【CustomDrawCell】事件
3.2、获取选中行的信息使用GirdView的【FocusedRowChanged】事件
using DevExpress.Utils; using DevExpress.XtraEditors; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Base; using DevExpress.XtraGrid.Views.Grid; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Utils; namespace Dev_WinfromTest { public partial class GridForm : DevExpress.XtraEditors.XtraForm { public GridForm() { InitializeComponent(); } private void GridForm_Load(object sender, EventArgs e) { GridSettings(); LoadDatasToGrid(); GridControlHelper.SetSelectedRowColor(gridView1, Color.Yellow, Color.Orange); } //设置表格 private void GridSettings() { //设置表格数据是否可编辑 gridView1.OptionsBehavior.Editable = true; gridView1.OptionsBehavior.ReadOnly = true; } private void gridView1_RowStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowStyleEventArgs e) { } /// <summary> /// 加载数据到表格中 /// </summary> /// <returns></returns> private void LoadDatasToGrid() { //模拟数据 List<PeopleInfo> peopeoInfos = new List<PeopleInfo>() { new PeopleInfo{ Id="SL009",Name="谭维维",Age=23,Sex="男",Email="3625783421@qq.com",Address="测试地址1",Work="产品经理"}, new PeopleInfo{ Id="SL008",Name="司一航",Age=22,Sex="男",Email="3625783422@qq.com",Address="测试地址2",Work="销售专员"}, new PeopleInfo{ Id="SL007",Name="周 倩",Age=25,Sex="女",Email="3625783423@qq.com",Address="测试地址3",Work="技术主管"}, new PeopleInfo{ Id="SL006",Name="王一星",Age=21,Sex="男",Email="3625783424@qq.com",Address="测试地址4",Work="设备主管"}, new PeopleInfo{ Id="SL005",Name="策俊逸",Age=24,Sex="男",Email="3625783425@qq.com",Address="测试地址5",Work="项目经理"}, new PeopleInfo{ Id="SL004",Name="周 茜",Age=22,Sex="女",Email="3625783426@qq.com",Address="测试地址6",Work="人资专员"}, new PeopleInfo{ Id="SL003",Name="司王成",Age=26,Sex="男",Email="3625783427@qq.com",Address="测试地址7",Work="车间主任"}, new PeopleInfo{ Id="SL002",Name="杨思凡",Age=24,Sex="男",Email="3625783428@qq.com",Address="测试地址8",Work="生产员工"}, new PeopleInfo{ Id="SL001",Name="策一方",Age=23,Sex="男",Email="3625783429@qq.com",Address="测试地址9",Work="售后员工"}, }; DataTable dt = DataTableHelper.ListToDataTable(peopeoInfos); gridControl1.DataSource = dt; } //修改表格的背景颜色 private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) { //修改指定单元格的颜色 if (modifyCellBackColor && e.Column.FieldName == "Work") { string strName = gridView1.GetRowCellDisplayText(e.RowHandle, gridView1.Columns["Work"]); //实现修改指定格的颜色 if (strName.Equals("技术主管")) { e.Appearance.BackColor = Color.SkyBlue; e.Appearance.BackColor2 = Color.LightCyan; } } //修改指定单元格的颜色 if (modifyColumnBackColor && e.Column.FieldName == "Sex") { string strName = gridView1.GetRowCellDisplayText(e.RowHandle, gridView1.Columns["Sex"]); //实现修改指定列的颜色 if (!string.IsNullOrEmpty(strName)) { e.Appearance.BackColor = Color.OrangeRed; } } DataRow dr = gridView1.GetDataRow(e.RowHandle); if (dr != null) { //修改指定值对应行的背景颜色 if (modifySingleRowBackColor && dr["Work"].ToString() == "产品经理") { e.Appearance.BackColor = Color.SkyBlue; } //修改指定行背景颜色 if (modifyMutiRowBackColor && e.RowHandle >= 6 && e.RowHandle <= 8) { e.Appearance.BackColor = Color.Pink; } } gridView1.RefreshData(); } #region 修改背景 private bool modifyCellBackColor = false; private bool modifyColumnBackColor = false; private bool modifySingleRowBackColor = false; private bool modifyMutiRowBackColor = false; //修改标题头背景颜色 private void simpleButton5_Click(object sender, EventArgs e) { //设置标题头背景颜色 GridControlHelper.SetGridViewHeaderBackColor(gridView1, 0, Color.BlueViolet); GridControlHelper.SetGridViewHeaderBackColor(gridView1, 3, Color.OrangeRed); GridControlHelper.SetGridViewHeaderBackColor(gridView1, 5, Color.LightGreen); GridControlHelper.SetGridViewHeaderBackColor(gridView1, "Name", Color.BlueViolet); GridControlHelper.SetGridViewHeaderBackColor(gridView1, "Email", Color.OrangeRed); GridControlHelper.SetGridViewHeaderBackColor(gridView1, "Work", Color.LightGreen); } //修改指定单元格背景 private void simpleButton1_Click(object sender, EventArgs e) { modifyCellBackColor = true; modifyColumnBackColor = false; modifySingleRowBackColor = false; modifyMutiRowBackColor = false; } //修改指定列背景 private void simpleButton2_Click(object sender, EventArgs e) { modifyCellBackColor = false; modifyColumnBackColor = true; modifySingleRowBackColor = false; modifyMutiRowBackColor = false; GridControlHelper.SetGridColumnBackColor(gridView1,2,Color.SkyBlue,Color.DeepPink,Color.Yellow); } //修改指定行背景 private void simpleButton3_Click(object sender, EventArgs e) { modifyCellBackColor = false; modifyColumnBackColor = false; modifySingleRowBackColor = true; modifyMutiRowBackColor = false; } //修改多行背景 private void simpleButton4_Click(object sender, EventArgs e) { modifyCellBackColor = false; modifyColumnBackColor = false; modifySingleRowBackColor = false; modifyMutiRowBackColor = true; } #endregion private void gridView1_ShownEditor(object sender, EventArgs e) { //修改选中的单元格颜色 gridView1.ActiveEditor.BackColor = Color.GreenYellow; } //设置表格的奇偶行颜色 private void simpleButton6_Click(object sender, EventArgs e) { GridControlHelper.SetOddEvenRowColor(gridView1,Color.LightSkyBlue,Color.Aqua); } //获取选中行的信息 private void gridView1_RowClick(object sender, RowClickEventArgs e) { //当前选定行 int i = this.gridView1.FocusedRowHandle; //选中行,列名为name的值 gridView1.GetRowCellDisplayText(i, gridView1.Columns["name"]); if (e.Button == MouseButtons.Left) { labelControl1.Text="按下鼠标左键"; } if (e.Button == MouseButtons.Right) { labelControl1.Text = "按下鼠标右键"; } if (e.Clicks == 1) { labelControl1.Text = "单击"; } if (e.Clicks == 2) { labelControl1.Text = "双击"; } } private void gridView1_RowCellClick(object sender, RowCellClickEventArgs e) { if (e.Button == MouseButtons.Left) { labelControl1.Text = "按下鼠标左键2"; } if (e.Button == MouseButtons.Right) { labelControl1.Text = "按下鼠标右键2"; } if (e.Clicks == 1) { labelControl1.Text = "单击2"; } if (e.Clicks == 2) { labelControl1.Text = "双击2"; } } private void gridView1_MouseDown(object sender, MouseEventArgs e) { //if (e.Button == MouseButtons.Left) //{ // labelControl1.Text = "按下鼠标左键3"; //} //if (e.Button == MouseButtons.Right) //{ // labelControl1.Text = "按下鼠标右键3"; //} } //获取选中行的数据(常用) private void gridView1_FocusedRowChanged(object sender, FocusedRowChangedEventArgs e) { labelControl1.Text = ""; for (int i = 0; i < gridView1.Columns.Count; i++) { int[] selectRow = gridView1.GetSelectedRows(); //获取到当前行的所有数据 string str = gridView1.GetDataRow(selectRow[0])[gridView1.Columns[i].FieldName].ToString(); labelControl1.Text += " " + str; } } //获取表格的所有标题字段 private void simpleButton7_Click(object sender, EventArgs e) { List<string> tmpFieldlist = GridControlHelper.GetAllFieldOfGrirdView(gridView1); string tmpStr = null; foreach (var item in tmpFieldlist) { tmpStr += " " + item; } labelControl1.Text = tmpStr; } //获取表格的所有标题名称 private void simpleButton8_Click(object sender, EventArgs e) { List<string> tmpCaptionlist = GridControlHelper.GetAllCaptionOfGrirdView(gridView1); string tmpStr = null; foreach (var item in tmpCaptionlist) { tmpStr += " " + item; } labelControl1.Text = tmpStr; } //修改标题标题头名称 private void simpleButton9_Click(object sender, EventArgs e) { GridControlHelper.ModifyGridViewTitleHeader(gridView1,2,"修改年龄标题名称"); GridControlHelper.ModifyGridViewTitleHeader(gridView1, "Email", "修改邮箱标题名称"); } }//Class_end //人员信息模型类 public class PeopleInfo { public string Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Sex { get; set; } public string Email { get; set; } public string Address { get; set; } public string Work { get; set; } } }