见帮助:private void AddCustomDataTableStyle()
{
myDataGridTableStyle1 = new DataGridTableStyle();
// EventHandlers
myDataGridTableStyle1.GridLineColorChanged += new System.EventHandler(GridLineColorChanged_Handler);
myDataGridTableStyle1.MappingName = "Customers"; // Set other properties.
myDataGridTableStyle1.AlternatingBackColor=System.Drawing.Color.Gold;
myDataGridTableStyle1.BackColor = System.Drawing.Color.White;
myDataGridTableStyle1.GridLineStyle=System.Windows.Forms.DataGridLineStyle.Solid;
myDataGridTableStyle1.GridLineColor=Color.Red; // Set the HeaderText and Width properties.
DataGridColumnStyle myBoolCol = new DataGridBoolColumn();
myBoolCol.MappingName = "Current";
myBoolCol.HeaderText = "IsCurrent Customer";
myBoolCol.Width = 150;
myDataGridTableStyle1.GridColumnStyles.Add(myBoolCol); // Add a second column style.
DataGridColumnStyle myTextCol = new DataGridTextBoxColumn();
myTextCol.MappingName = "custName";
myTextCol.HeaderText = "Customer Name";
myTextCol.Width = 250;
myDataGridTableStyle1.GridColumnStyles.Add(myTextCol); // Create new ColumnStyle objects
DataGridColumnStyle cOrderDate = new DataGridTextBoxColumn();
cOrderDate.MappingName = "OrderDate";
cOrderDate.HeaderText = "Order Date";
cOrderDate.Width = 100; // Use a PropertyDescriptor to create a formatted column.
PropertyDescriptorCollection myPropertyDescriptorCollection = BindingContext
[myDataSet, "Customers.custToOrders"].GetItemProperties();
// Create a formatted column using a PropertyDescriptor.
DataGridColumnStyle csOrderAmount =
new DataGridTextBoxColumn(myPropertyDescriptorCollection["OrderAmount"], "c", true);
csOrderAmount.MappingName = "OrderAmount";
csOrderAmount.HeaderText = "Total";
csOrderAmount.Width = 100;
// Add the DataGridTableStyle instances to the GridTableStylesCollection.
myDataGrid.TableStyles.Add(myDataGridTableStyle1);
}
private void GridLineColorChanged_Handler(object sender,EventArgs e)
{
MessageBox.Show("GridLineColor Changed", "DataGridTableStyle");
}
{
myDataGridTableStyle1 = new DataGridTableStyle();
// EventHandlers
myDataGridTableStyle1.GridLineColorChanged += new System.EventHandler(GridLineColorChanged_Handler);
myDataGridTableStyle1.MappingName = "Customers"; // Set other properties.
myDataGridTableStyle1.AlternatingBackColor=System.Drawing.Color.Gold;
myDataGridTableStyle1.BackColor = System.Drawing.Color.White;
myDataGridTableStyle1.GridLineStyle=System.Windows.Forms.DataGridLineStyle.Solid;
myDataGridTableStyle1.GridLineColor=Color.Red; // Set the HeaderText and Width properties.
DataGridColumnStyle myBoolCol = new DataGridBoolColumn();
myBoolCol.MappingName = "Current";
myBoolCol.HeaderText = "IsCurrent Customer";
myBoolCol.Width = 150;
myDataGridTableStyle1.GridColumnStyles.Add(myBoolCol); // Add a second column style.
DataGridColumnStyle myTextCol = new DataGridTextBoxColumn();
myTextCol.MappingName = "custName";
myTextCol.HeaderText = "Customer Name";
myTextCol.Width = 250;
myDataGridTableStyle1.GridColumnStyles.Add(myTextCol); // Create new ColumnStyle objects
DataGridColumnStyle cOrderDate = new DataGridTextBoxColumn();
cOrderDate.MappingName = "OrderDate";
cOrderDate.HeaderText = "Order Date";
cOrderDate.Width = 100; // Use a PropertyDescriptor to create a formatted column.
PropertyDescriptorCollection myPropertyDescriptorCollection = BindingContext
[myDataSet, "Customers.custToOrders"].GetItemProperties();
// Create a formatted column using a PropertyDescriptor.
DataGridColumnStyle csOrderAmount =
new DataGridTextBoxColumn(myPropertyDescriptorCollection["OrderAmount"], "c", true);
csOrderAmount.MappingName = "OrderAmount";
csOrderAmount.HeaderText = "Total";
csOrderAmount.Width = 100;
// Add the DataGridTableStyle instances to the GridTableStylesCollection.
myDataGrid.TableStyles.Add(myDataGridTableStyle1);
}
private void GridLineColorChanged_Handler(object sender,EventArgs e)
{
MessageBox.Show("GridLineColor Changed", "DataGridTableStyle");
}
这条记录的背景色就变成其他颜色,比如说红色。
从而与其他记录区别开来。
public void SetColorValues(object sender, DataGridCellColorEventArgs e)
{
//根据条件, 将相关行设置不同的背景色.
if (Convert.ToInt16(dgBrowse[e.Row,1])>1000)
e.BackColor=Color.PowderBlue;
else if (Convert.ToInt16(dgBrowse[e.Row,1])<100)
e.BackColor=Color.Pink;
}
public class DataGridCellColorEventArgs : EventArgs
{
private int _row;
private Color _backcolor; public DataGridCellColorEventArgs(int row, Color val)
{
_row = row;
_backcolor = val;
}
public int Row
{
get{ return _row;}
set{ _row = value;}
}
public Color BackColor
{
get{ return _backcolor;}
set{ _backcolor = value;}
}
} //为事件建立委托.
public delegate void CellColorEventHandler(object sender, DataGridCellColorEventArgs e); public class DataGridCellColorTextBoxColumn : DataGridTextBoxColumn
{
public event CellColorEventHandler CheckCellColor; public DataGridCellColorTextBoxColumn()
{
} //继承DataGridTextBoxColumn的Pain事件.
protected override void Paint(System.Drawing.Graphics g, System.Drawing.Rectangle bounds, System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Brush backBrush, System.Drawing.Brush foreBrush, bool alignToRight)
{
if(CheckCellColor != null)
{
//重绘画时,设置当前行的背景色
DataGridCellColorEventArgs e = new DataGridCellColorEventArgs(rowNum, Color.White);
CheckCellColor(this, e);
if(e.BackColor != Color.White)
backBrush = new SolidBrush(e.BackColor);
} base.Paint(g, bounds, source, rowNum, backBrush, foreBrush, alignToRight);
} protected override void Edit(System.Windows.Forms.CurrencyManager source, int rowNum, System.Drawing.Rectangle bounds, bool readOnly, string instantText, bool cellIsVisible)
{
base.Edit(source, rowNum, bounds, readOnly, instantText, cellIsVisible);
}
}
//dgBrowse是dataGrid
DataGridTableStyle tableStyle = new DataGridTableStyle();
tableStyle.MappingName = ""; int numCols = fl_DB.Tables[""].Columns.Count;
DataGridCellColorTextBoxColumn columnTextColumn ;
for(int i = 0; i < numCols; ++i)
{
columnTextColumn = new DataGridCellColorTextBoxColumn();
columnTextColumn.HeaderText = fl_DB.Tables[""].Columns[i].ColumnName;
columnTextColumn.MappingName = fl_DB.Tables[""].Columns[i].ColumnName; //为每个单元格建立设置背景色的事件.
columnTextColumn.CheckCellColor += new CellColorEventHandler(SetColorValues); tableStyle.GridColumnStyles.Add(columnTextColumn);
}
this.dgBrowse.TableStyles.Clear();
this.dgBrowse.TableStyles.Add(tableStyle);
而langmafeng(乞力马扎罗) 提供的方法则可以对指定单元格的样式进行设定,
包括背景色、字体颜色、字体样式等,严重学习!