using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraGrid.Views.Grid.Drawing;
using DevExpress.Utils.Drawing;
using DevExpress.XtraGrid.Views.Grid;
using DevExpress.Utils;
namespace WindowsApplication1 {
public partial class Form1 : Form {
private DataTable CreateTable(int RowCount) {
DataTable tbl = new DataTable();
tbl.Columns.Add("ID", typeof(int));
tbl.Columns.Add("Name", typeof(string));
tbl.Columns.Add("Number", typeof(int));
tbl.Columns.Add("Date", typeof(DateTime));
for (int i = 0; i < RowCount; i++)
tbl.Rows.Add(new object[] { i, String.Format("Name{0}", i), 3 - i, DateTime.Now.AddDays(i) });
return tbl;
}
private MyGridPainter _GridPainter;
DevExpress.XtraGrid.Columns.GridColumn _indicatorColumn;
public Form1() {
InitializeComponent();
gridControl1.DataSource = CreateTable(20);
_GridPainter = new MyGridPainter(gridView1);
_indicatorColumn = gridView1.Columns["ID"];
_indicatorColumn.Width = 10;
_indicatorColumn.OptionsColumn.AllowFocus = false;
_indicatorColumn.OptionsColumn.AllowGroup = DefaultBoolean.False;
_indicatorColumn.OptionsColumn.AllowMove = false;
_indicatorColumn.OptionsColumn.AllowSort = DefaultBoolean.False;
}
private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e) {
if (e.Column == _indicatorColumn) {
Rectangle bounds = e.Bounds;
bounds.Height += 1;
bounds.X -= 1;
bounds.Width += 2;
_GridPainter.DrawIndicator(e.Graphics, bounds, IndicatorKind.Row, e.DisplayText);
e.Handled = true;
}
}
private void gridView1_CustomDrawColumnHeader(object sender, ColumnHeaderCustomDrawEventArgs e) {
if (e.Column == _indicatorColumn) {
Rectangle bounds = e.Bounds;
bounds.Width -= 1;
_GridPainter.DrawIndicator(e.Graphics, bounds, IndicatorKind.Header, "");
e.Handled = true;
}
}
}
public class MyGridPainter : GridPainter {
public MyGridPainter(GridView view)
: base(view) {
}
public void DrawIndicator(Graphics graphics, Rectangle bounds, IndicatorKind kind, string text) {
ObjectPainter painter = GetIndicatorPainter(IndicatorKind.Header);
IndicatorObjectInfoArgs args = new IndicatorObjectInfoArgs(bounds, AppearanceObject.EmptyAppearance, null, -1, kind);
args.Graphics = graphics;
args.DisplayText = text;
painter.DrawObject(args);
}
}
}