Example E710
Visible to All Users

WinForms Data Grid - Create custom columns

This example demonstrates how to create a custom grid column.

Create a GridColumn descendant class. If you add properties to a custom column and want to serialize them (using the SaveLayoutTo... method), apply the XtraSerializableProperty attribute.

C#
public class MyGridColumn : GridColumn { public MyGridColumn() { } string customDataValue = string.Empty; [XtraSerializableProperty()] public string CustomData { get { return customDataValue; } set { customDataValue = value; } } protected override void Assign(GridColumn column) { base.Assign(column); if(column is MyGridColumn) { this.CustomData = ((MyGridColumn)column).CustomData; } } }

Create a descendant from the GridColumnCollection class and override the CreateColumn method to instantiate a custom column:

C#
public class MyGridColumnCollection : GridColumnCollection { public MyGridColumnCollection(ColumnView view) : base(view) { } protected override GridColumn CreateColumn() { return new MyGridColumn(); } }

Create a descendant from the GridView class and override the CreateColumnCollection method to instantiate your column collection:

C#
public class MyGridView : DevExpress.XtraGrid.Views.Grid.GridView { public MyGridView() : this(null) {} public MyGridView(DevExpress.XtraGrid.GridControl grid) : base(grid) { // Your initialization code. } protected override string ViewName { get { return "MyGridView"; } } protected override GridColumnCollection CreateColumnCollection() { return new MyGridColumnCollection(this); } }

Files to Review

Does this example address your development requirements/objectives?

(you will be redirected to DevExpress.com to submit your response)

Example Code

Form1.cs(vb)
C#
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; namespace MyXtraGrid { /// <summary> /// Summary description for Form1. /// </summary> public class Form1 : System.Windows.Forms.Form { private MyXtraGrid.MyGridControl myGridControl1; private System.Data.DataSet dataSet1; private System.Data.DataTable dataTable1; private System.Data.DataColumn dataColumn1; private MyXtraGrid.MyGridColumn myGridColumn1; private MyXtraGrid.MyGridView myGridView1; private System.Windows.Forms.PropertyGrid propertyGrid1; /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.Container components = null; public Form1() { // // Required for Windows Form Designer support // InitializeComponent(); propertyGrid1.SelectedObject = myGridColumn1; } /// <summary> /// Clean up any resources being used. /// </summary> protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.myGridControl1 = new MyXtraGrid.MyGridControl(); this.dataTable1 = new System.Data.DataTable(); this.dataColumn1 = new System.Data.DataColumn(); this.myGridView1 = new MyXtraGrid.MyGridView(); this.myGridColumn1 = new MyXtraGrid.MyGridColumn(); this.dataSet1 = new System.Data.DataSet(); this.propertyGrid1 = new System.Windows.Forms.PropertyGrid(); ((System.ComponentModel.ISupportInitialize)(this.myGridControl1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataTable1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.myGridView1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).BeginInit(); this.SuspendLayout(); // // myGridControl1 // this.myGridControl1.DataSource = this.dataTable1; this.myGridControl1.Dock = System.Windows.Forms.DockStyle.Fill; // // myGridControl1.EmbeddedNavigator // this.myGridControl1.EmbeddedNavigator.Name = ""; this.myGridControl1.Location = new System.Drawing.Point(0, 0); this.myGridControl1.MainView = this.myGridView1; this.myGridControl1.Name = "myGridControl1"; this.myGridControl1.Size = new System.Drawing.Size(336, 274); this.myGridControl1.TabIndex = 0; this.myGridControl1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { this.myGridView1}); // // dataTable1 // this.dataTable1.Columns.AddRange(new System.Data.DataColumn[] { this.dataColumn1}); this.dataTable1.TableName = "Table1"; // // dataColumn1 // this.dataColumn1.ColumnName = "Column1"; // // myGridView1 // this.myGridView1.Appearance.ColumnFilterButton.BackColor = System.Drawing.Color.Silver; this.myGridView1.Appearance.ColumnFilterButton.BackColor2 = System.Drawing.Color.FromArgb(((System.Byte)(212)), ((System.Byte)(212)), ((System.Byte)(212))); this.myGridView1.Appearance.ColumnFilterButton.BorderColor = System.Drawing.Color.Silver; this.myGridView1.Appearance.ColumnFilterButton.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.ColumnFilterButton.ForeColor = System.Drawing.Color.Gray; this.myGridView1.Appearance.ColumnFilterButton.Options.UseBackColor = true; this.myGridView1.Appearance.ColumnFilterButton.Options.UseBorderColor = true; this.myGridView1.Appearance.ColumnFilterButton.Options.UseFont = true; this.myGridView1.Appearance.ColumnFilterButton.Options.UseForeColor = true; this.myGridView1.Appearance.ColumnFilterButtonActive.BackColor = System.Drawing.Color.LightGray; this.myGridView1.Appearance.ColumnFilterButtonActive.BackColor2 = System.Drawing.Color.WhiteSmoke; this.myGridView1.Appearance.ColumnFilterButtonActive.BorderColor = System.Drawing.Color.LightGray; this.myGridView1.Appearance.ColumnFilterButtonActive.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.ColumnFilterButtonActive.Options.UseBackColor = true; this.myGridView1.Appearance.ColumnFilterButtonActive.Options.UseBorderColor = true; this.myGridView1.Appearance.ColumnFilterButtonActive.Options.UseFont = true; this.myGridView1.Appearance.DetailTip.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(255)), ((System.Byte)(225))); this.myGridView1.Appearance.DetailTip.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.DetailTip.ForeColor = System.Drawing.Color.Black; this.myGridView1.Appearance.DetailTip.Options.UseBackColor = true; this.myGridView1.Appearance.DetailTip.Options.UseFont = true; this.myGridView1.Appearance.DetailTip.Options.UseForeColor = true; this.myGridView1.Appearance.Empty.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(243)), ((System.Byte)(243)), ((System.Byte)(243))); this.myGridView1.Appearance.Empty.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.Empty.ForeColor = System.Drawing.Color.White; this.myGridView1.Appearance.Empty.Options.UseBackColor = true; this.myGridView1.Appearance.Empty.Options.UseFont = true; this.myGridView1.Appearance.Empty.Options.UseForeColor = true; this.myGridView1.Appearance.EvenRow.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(223)), ((System.Byte)(223)), ((System.Byte)(223))); this.myGridView1.Appearance.EvenRow.BackColor2 = System.Drawing.Color.GhostWhite; this.myGridView1.Appearance.EvenRow.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.EvenRow.ForeColor = System.Drawing.Color.Black; this.myGridView1.Appearance.EvenRow.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; this.myGridView1.Appearance.EvenRow.Options.UseBackColor = true; this.myGridView1.Appearance.EvenRow.Options.UseFont = true; this.myGridView1.Appearance.EvenRow.Options.UseForeColor = true; this.myGridView1.Appearance.FilterCloseButton.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(212)), ((System.Byte)(208)), ((System.Byte)(200))); this.myGridView1.Appearance.FilterCloseButton.BackColor2 = System.Drawing.Color.FromArgb(((System.Byte)(118)), ((System.Byte)(170)), ((System.Byte)(225))); this.myGridView1.Appearance.FilterCloseButton.BorderColor = System.Drawing.Color.FromArgb(((System.Byte)(212)), ((System.Byte)(208)), ((System.Byte)(200))); this.myGridView1.Appearance.FilterCloseButton.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.FilterCloseButton.ForeColor = System.Drawing.Color.Black; this.myGridView1.Appearance.FilterCloseButton.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.ForwardDiagonal; this.myGridView1.Appearance.FilterCloseButton.Options.UseBackColor = true; this.myGridView1.Appearance.FilterCloseButton.Options.UseBorderColor = true; this.myGridView1.Appearance.FilterCloseButton.Options.UseFont = true; this.myGridView1.Appearance.FilterCloseButton.Options.UseForeColor = true; this.myGridView1.Appearance.FilterPanel.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(28)), ((System.Byte)(80)), ((System.Byte)(135))); this.myGridView1.Appearance.FilterPanel.BackColor2 = System.Drawing.Color.FromArgb(((System.Byte)(212)), ((System.Byte)(208)), ((System.Byte)(200))); this.myGridView1.Appearance.FilterPanel.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.FilterPanel.ForeColor = System.Drawing.Color.White; this.myGridView1.Appearance.FilterPanel.Options.UseBackColor = true; this.myGridView1.Appearance.FilterPanel.Options.UseFont = true; this.myGridView1.Appearance.FilterPanel.Options.UseForeColor = true; this.myGridView1.Appearance.FixedLine.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(58)), ((System.Byte)(58)), ((System.Byte)(58))); this.myGridView1.Appearance.FixedLine.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.FixedLine.ForeColor = System.Drawing.Color.Black; this.myGridView1.Appearance.FixedLine.Options.UseBackColor = true; this.myGridView1.Appearance.FixedLine.Options.UseFont = true; this.myGridView1.Appearance.FixedLine.Options.UseForeColor = true; this.myGridView1.Appearance.FocusedCell.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(255)), ((System.Byte)(255)), ((System.Byte)(225))); this.myGridView1.Appearance.FocusedCell.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.FocusedCell.ForeColor = System.Drawing.Color.Black; this.myGridView1.Appearance.FocusedCell.Options.UseBackColor = true; this.myGridView1.Appearance.FocusedCell.Options.UseFont = true; this.myGridView1.Appearance.FocusedCell.Options.UseForeColor = true; this.myGridView1.Appearance.FocusedRow.BackColor = System.Drawing.Color.Navy; this.myGridView1.Appearance.FocusedRow.BackColor2 = System.Drawing.Color.FromArgb(((System.Byte)(50)), ((System.Byte)(50)), ((System.Byte)(178))); this.myGridView1.Appearance.FocusedRow.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.FocusedRow.ForeColor = System.Drawing.Color.White; this.myGridView1.Appearance.FocusedRow.Options.UseBackColor = true; this.myGridView1.Appearance.FocusedRow.Options.UseFont = true; this.myGridView1.Appearance.FocusedRow.Options.UseForeColor = true; this.myGridView1.Appearance.FooterPanel.BackColor = System.Drawing.Color.Silver; this.myGridView1.Appearance.FooterPanel.BorderColor = System.Drawing.Color.Silver; this.myGridView1.Appearance.FooterPanel.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.FooterPanel.ForeColor = System.Drawing.Color.Black; this.myGridView1.Appearance.FooterPanel.Options.UseBackColor = true; this.myGridView1.Appearance.FooterPanel.Options.UseBorderColor = true; this.myGridView1.Appearance.FooterPanel.Options.UseFont = true; this.myGridView1.Appearance.FooterPanel.Options.UseForeColor = true; this.myGridView1.Appearance.GroupButton.BackColor = System.Drawing.Color.Silver; this.myGridView1.Appearance.GroupButton.BorderColor = System.Drawing.Color.Silver; this.myGridView1.Appearance.GroupButton.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.GroupButton.ForeColor = System.Drawing.Color.Black; this.myGridView1.Appearance.GroupButton.Options.UseBackColor = true; this.myGridView1.Appearance.GroupButton.Options.UseBorderColor = true; this.myGridView1.Appearance.GroupButton.Options.UseFont = true; this.myGridView1.Appearance.GroupButton.Options.UseForeColor = true; this.myGridView1.Appearance.GroupFooter.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(202)), ((System.Byte)(202)), ((System.Byte)(202))); this.myGridView1.Appearance.GroupFooter.BorderColor = System.Drawing.Color.FromArgb(((System.Byte)(202)), ((System.Byte)(202)), ((System.Byte)(202))); this.myGridView1.Appearance.GroupFooter.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.GroupFooter.ForeColor = System.Drawing.Color.Black; this.myGridView1.Appearance.GroupFooter.Options.UseBackColor = true; this.myGridView1.Appearance.GroupFooter.Options.UseBorderColor = true; this.myGridView1.Appearance.GroupFooter.Options.UseFont = true; this.myGridView1.Appearance.GroupFooter.Options.UseForeColor = true; this.myGridView1.Appearance.GroupPanel.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(58)), ((System.Byte)(110)), ((System.Byte)(165))); this.myGridView1.Appearance.GroupPanel.BackColor2 = System.Drawing.Color.White; this.myGridView1.Appearance.GroupPanel.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold); this.myGridView1.Appearance.GroupPanel.ForeColor = System.Drawing.Color.White; this.myGridView1.Appearance.GroupPanel.Options.UseBackColor = true; this.myGridView1.Appearance.GroupPanel.Options.UseFont = true; this.myGridView1.Appearance.GroupPanel.Options.UseForeColor = true; this.myGridView1.Appearance.GroupRow.BackColor = System.Drawing.Color.Gray; this.myGridView1.Appearance.GroupRow.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.GroupRow.ForeColor = System.Drawing.Color.Silver; this.myGridView1.Appearance.GroupRow.Options.UseBackColor = true; this.myGridView1.Appearance.GroupRow.Options.UseFont = true; this.myGridView1.Appearance.GroupRow.Options.UseForeColor = true; this.myGridView1.Appearance.HeaderPanel.BackColor = System.Drawing.Color.Silver; this.myGridView1.Appearance.HeaderPanel.BorderColor = System.Drawing.Color.Silver; this.myGridView1.Appearance.HeaderPanel.Font = new System.Drawing.Font("Arial", 8F, System.Drawing.FontStyle.Bold); this.myGridView1.Appearance.HeaderPanel.ForeColor = System.Drawing.Color.Black; this.myGridView1.Appearance.HeaderPanel.Options.UseBackColor = true; this.myGridView1.Appearance.HeaderPanel.Options.UseBorderColor = true; this.myGridView1.Appearance.HeaderPanel.Options.UseFont = true; this.myGridView1.Appearance.HeaderPanel.Options.UseForeColor = true; this.myGridView1.Appearance.HideSelectionRow.BackColor = System.Drawing.Color.Gray; this.myGridView1.Appearance.HideSelectionRow.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.HideSelectionRow.ForeColor = System.Drawing.Color.FromArgb(((System.Byte)(212)), ((System.Byte)(208)), ((System.Byte)(200))); this.myGridView1.Appearance.HideSelectionRow.Options.UseBackColor = true; this.myGridView1.Appearance.HideSelectionRow.Options.UseFont = true; this.myGridView1.Appearance.HideSelectionRow.Options.UseForeColor = true; this.myGridView1.Appearance.HorzLine.BackColor = System.Drawing.Color.Silver; this.myGridView1.Appearance.HorzLine.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.HorzLine.ForeColor = System.Drawing.Color.Gray; this.myGridView1.Appearance.HorzLine.Options.UseBackColor = true; this.myGridView1.Appearance.HorzLine.Options.UseFont = true; this.myGridView1.Appearance.HorzLine.Options.UseForeColor = true; this.myGridView1.Appearance.OddRow.BackColor = System.Drawing.Color.White; this.myGridView1.Appearance.OddRow.BackColor2 = System.Drawing.Color.White; this.myGridView1.Appearance.OddRow.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.OddRow.ForeColor = System.Drawing.Color.Black; this.myGridView1.Appearance.OddRow.GradientMode = System.Drawing.Drawing2D.LinearGradientMode.BackwardDiagonal; this.myGridView1.Appearance.OddRow.Options.UseBackColor = true; this.myGridView1.Appearance.OddRow.Options.UseFont = true; this.myGridView1.Appearance.OddRow.Options.UseForeColor = true; this.myGridView1.Appearance.Preview.BackColor = System.Drawing.Color.White; this.myGridView1.Appearance.Preview.BackColor2 = System.Drawing.Color.White; this.myGridView1.Appearance.Preview.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.Preview.ForeColor = System.Drawing.Color.Navy; this.myGridView1.Appearance.Preview.Options.UseBackColor = true; this.myGridView1.Appearance.Preview.Options.UseFont = true; this.myGridView1.Appearance.Preview.Options.UseForeColor = true; this.myGridView1.Appearance.Row.BackColor = System.Drawing.Color.White; this.myGridView1.Appearance.Row.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.Row.ForeColor = System.Drawing.Color.Black; this.myGridView1.Appearance.Row.Options.UseBackColor = true; this.myGridView1.Appearance.Row.Options.UseFont = true; this.myGridView1.Appearance.Row.Options.UseForeColor = true; this.myGridView1.Appearance.RowSeparator.BackColor = System.Drawing.Color.White; this.myGridView1.Appearance.RowSeparator.BackColor2 = System.Drawing.Color.FromArgb(((System.Byte)(243)), ((System.Byte)(243)), ((System.Byte)(243))); this.myGridView1.Appearance.RowSeparator.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.RowSeparator.ForeColor = System.Drawing.Color.Gray; this.myGridView1.Appearance.RowSeparator.Options.UseBackColor = true; this.myGridView1.Appearance.RowSeparator.Options.UseFont = true; this.myGridView1.Appearance.RowSeparator.Options.UseForeColor = true; this.myGridView1.Appearance.SelectedRow.BackColor = System.Drawing.Color.FromArgb(((System.Byte)(10)), ((System.Byte)(10)), ((System.Byte)(138))); this.myGridView1.Appearance.SelectedRow.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.SelectedRow.ForeColor = System.Drawing.Color.White; this.myGridView1.Appearance.SelectedRow.Options.UseBackColor = true; this.myGridView1.Appearance.SelectedRow.Options.UseFont = true; this.myGridView1.Appearance.SelectedRow.Options.UseForeColor = true; this.myGridView1.Appearance.VertLine.BackColor = System.Drawing.Color.Silver; this.myGridView1.Appearance.VertLine.Font = new System.Drawing.Font("Arial", 8F); this.myGridView1.Appearance.VertLine.ForeColor = System.Drawing.Color.Gray; this.myGridView1.Appearance.VertLine.Options.UseBackColor = true; this.myGridView1.Appearance.VertLine.Options.UseFont = true; this.myGridView1.Appearance.VertLine.Options.UseForeColor = true; this.myGridView1.Columns.AddRange(new DevExpress.XtraGrid.Columns.GridColumn[] { this.myGridColumn1}); this.myGridView1.GridControl = this.myGridControl1; this.myGridView1.Name = "myGridView1"; // // myGridColumn1 // this.myGridColumn1.Caption = "myGridColumn1"; this.myGridColumn1.CustomData = "test"; this.myGridColumn1.Name = "myGridColumn1"; this.myGridColumn1.Visible = true; this.myGridColumn1.VisibleIndex = 0; // // dataSet1 // this.dataSet1.DataSetName = "NewDataSet"; this.dataSet1.Locale = new System.Globalization.CultureInfo("en-US"); this.dataSet1.Tables.AddRange(new System.Data.DataTable[] { this.dataTable1}); // // propertyGrid1 // this.propertyGrid1.CommandsVisibleIfAvailable = true; this.propertyGrid1.Dock = System.Windows.Forms.DockStyle.Right; this.propertyGrid1.LargeButtons = false; this.propertyGrid1.LineColor = System.Drawing.SystemColors.ScrollBar; this.propertyGrid1.Location = new System.Drawing.Point(336, 0); this.propertyGrid1.Name = "propertyGrid1"; this.propertyGrid1.PropertySort = System.Windows.Forms.PropertySort.Alphabetical; this.propertyGrid1.Size = new System.Drawing.Size(216, 274); this.propertyGrid1.TabIndex = 1; this.propertyGrid1.Text = "propertyGrid1"; this.propertyGrid1.ViewBackColor = System.Drawing.SystemColors.Window; this.propertyGrid1.ViewForeColor = System.Drawing.SystemColors.WindowText; // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(552, 274); this.Controls.Add(this.myGridControl1); this.Controls.Add(this.propertyGrid1); this.Name = "Form1"; this.Text = "Form1"; ((System.ComponentModel.ISupportInitialize)(this.myGridControl1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dataTable1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.myGridView1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.dataSet1)).EndInit(); this.ResumeLayout(false); } #endregion /// <summary> /// The main entry point for the application. /// </summary> [STAThread] static void Main() { Application.Run(new Form1()); } } }
MyGridColumn.cs(vb)
C#
using System; using DevExpress.Utils.Serializing; using DevExpress.XtraGrid.Columns; using DevExpress.XtraGrid.Views.Base; namespace MyXtraGrid { public class MyGridColumn : GridColumn { public MyGridColumn() { } string customDataValue = string.Empty; [XtraSerializableProperty()] public string CustomData { get { return customDataValue; } set { customDataValue = value; } } protected override void Assign(GridColumn column) { base.Assign(column); if(column is MyGridColumn) { this.CustomData = ((MyGridColumn)column).CustomData; } } } public class MyGridColumnCollection : GridColumnCollection { public MyGridColumnCollection(ColumnView view) : base(view) { } protected override GridColumn CreateColumn() { return new MyGridColumn(); } } }
MyGridControl.cs(vb)
C#
using System; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Views.Base; using DevExpress.XtraGrid.Registrator; namespace MyXtraGrid { public class MyGridControl : GridControl { protected override BaseView CreateDefaultView() { return CreateView("MyGridView"); } protected override void RegisterAvailableViewsCore(InfoCollection collection) { base.RegisterAvailableViewsCore(collection); collection.Add(new MyGridViewInfoRegistrator()); } } }
MyGridHandler.cs(vb)
C#
using System; using System.Windows.Forms; using DevExpress.XtraGrid.Views.Grid; namespace MyXtraGrid { public class MyGridHandler : DevExpress.XtraGrid.Views.Grid.Handler.GridHandler { public MyGridHandler(GridView gridView) : base(gridView) {} protected override void OnKeyDown(KeyEventArgs e) { base.OnKeyDown(e); if(e.KeyData == Keys.Delete && View.State == GridState.Normal) View.DeleteRow(View.FocusedRowHandle); } } }
MyGridRegistration.cs(vb)
C#
using System; using DevExpress.XtraGrid; using DevExpress.XtraGrid.Views.Base; using DevExpress.XtraGrid.Views.Base.Handler; using DevExpress.XtraGrid.Views.Base.ViewInfo; using DevExpress.XtraGrid.Registrator; namespace MyXtraGrid { public class MyGridViewInfoRegistrator : GridInfoRegistrator { public override string ViewName { get { return "MyGridView"; } } public override BaseView CreateView(GridControl grid) { return new MyGridView(grid as GridControl); } public override BaseViewInfo CreateViewInfo(BaseView view) { return new MyGridViewInfo(view as MyGridView); } public override BaseViewHandler CreateHandler(BaseView view) { return new MyGridHandler(view as MyGridView); } } }
MyGridView.cs(vb)
C#
using System; using DevExpress.XtraGrid.Columns; namespace MyXtraGrid { public class MyGridView : DevExpress.XtraGrid.Views.Grid.GridView { public MyGridView() : this(null) {} public MyGridView(DevExpress.XtraGrid.GridControl grid) : base(grid) { // put your initialization code here } protected override string ViewName { get { return "MyGridView"; } } protected override GridColumnCollection CreateColumnCollection() { return new MyGridColumnCollection(this); } } }
MyGridViewInfo.cs(vb)
C#
using System; using System.Drawing; using DevExpress.XtraGrid.Views.Grid.ViewInfo; namespace MyXtraGrid { public class MyGridViewInfo : DevExpress.XtraGrid.Views.Grid.ViewInfo.GridViewInfo { public MyGridViewInfo(DevExpress.XtraGrid.Views.Grid.GridView gridView) : base(gridView) {} public override int CalcRowHeight(Graphics graphics, int rowHandle, int rowVisibleIndex, int min, int level, bool useCache, GridColumnsInfo columns) { return base.CalcRowHeight(graphics, rowHandle, rowVisibleIndex, min - 2, level, useCache, columns); } } }

Disclaimer: The information provided on DevExpress.com and affiliated web properties (including the DevExpress Support Center) is provided "as is" without warranty of any kind. Developer Express Inc disclaims all warranties, either express or implied, including the warranties of merchantability and fitness for a particular purpose. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.

Confidential Information: Developer Express Inc does not wish to receive, will not act to procure, nor will it solicit, confidential or proprietary materials and information from you through the DevExpress Support Center or its web properties. Any and all materials or information divulged during chats, email communications, online discussions, Support Center tickets, or made available to Developer Express Inc in any manner will be deemed NOT to be confidential by Developer Express Inc. Please refer to the DevExpress.com Website Terms of Use for more information in this regard.