解决方案 »
- ado.net中如何把本地的图片上传到服务器中,并且要根据服务器的图片地址显示出来。
- C# StreamWriter.WriteLine发不出内容,怎么回事呢?
- 求助:PropertyGrid 中使用ComboBox项目时,如何使它只能选择不能输入呢?
- 求教:读txt文件会乱码?
- 如何提取字符串中的字符串?
- 在C#里做控件怎么为控件增加属性和事件啊?我用的vs2005
- 哪位高手能给一个多线程更新树节点的?
- .net 不能写入数据库的问题?
- 怎样实现对文件的扫描
- ADOCONNECTION与OLEDBCONNECTION问个明白~谢
- 问一个字符串的处理方法
- 请教dataGridView单元格能双击选中复制,但不能编辑的方法
可能是后面的代码又把颜色设置回去了
void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
}
在里面e.Value就是某一单元格的值 通过判断 设置颜色
还有我记得修改datagridview颜色方法在初始化时候调用是没用的,好像要放在form_load事件里
行
额,学艺不精,把行和列混淆了,贻笑大方,根据你的提示,我又写了2段代码,但是对于绑定数据库的datagridview还是无法显示出我想要的红色
请你帮忙看看我的代码有误吗,第一段注释了,第二段没注释,还写了一个foreach的判断也没成功
//private void dgvDataTable_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
//{
// if (e.ColumnIndex == this.dataGridView1.Columns["courceNetDataGridViewTextBoxColumn"].Index)//根据成绩设置单元格样式
// {
// object obj = this.dataGridView1.Rows[e.ColumnIndex].Cells[e.ColumnIndex].Value;
// int n = Convert.ToInt32(obj);//对不及格的成绩设置特殊样式
// if (n < 60)
// {
// DataGridViewCellStyle cellStyle = new DataGridViewCellStyle();
// cellStyle.ForeColor = Color.Red; // //this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = Color.Red;//设置小于60的数字显示为红色
// //this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.SelectionForeColor = Color.Red;
// //this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.Alignment = DataGridViewContentAlignment.MiddleRight;
// }
// }
//}
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
int intGrade = Convert.ToInt32(this.dataGridView1.Rows[e.RowIndex].Cells["courceNetDataGridViewTextBoxColumn"].Value);
if (intGrade < 60)
{
this.dataGridView1.Rows[e.RowIndex].Cells[1].Style.ForeColor = Color.Red;//设置小于60的数字显示为红色
this.dataGridView1.Rows[e.RowIndex].Cells[1].Style.SelectionForeColor = Color.Red;
this.dataGridView1.Rows[e.RowIndex].Cells[1].Style.Alignment = DataGridViewContentAlignment.MiddleRight;
}
} //foreach (DataRow row1 in dataGridView1.Rows)
//{
// DataGridViewRow gridRow = new DataGridViewRow();
// DataGridViewButtonCell btn_cell = new DataGridViewButtonCell();
// btn_cell.Value = "通过";
// for (int col_index = 0; col_index < dataGridView1.Columns.Count; col_index++)
// {
// DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell();
// cell.Value = row1[col_index];
// gridRow.Cells.Add(cell);
// if (col_index == 3)
// {
// if (Convert.ToDecimal(row1[3]) < 60)
// {
// DataGridViewCellStyle cellStyle = new DataGridViewCellStyle();
// cellStyle.ForeColor = Color.Red;
// cell.Style = cellStyle;
// btn_cell.Value = "补考";
// }
// }
// }
// gridRow.Cells.Add(btn_cell);
// dataGridView1.Rows.Add(gridRow);
//}
行
额,学艺不精,把行和列混淆了,贻笑大方,根据你的提示,我又写了2段代码,但是对于绑定数据库的datagridview还是无法显示出我想要的红色
请你帮忙看看我的代码有误吗,第一段注释了,第二段没注释,还写了一个foreach的判断也没成功
//private void dgvDataTable_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
//{
// if (e.ColumnIndex == this.dataGridView1.Columns["courceNetDataGridViewTextBoxColumn"].Index)//根据成绩设置单元格样式
// {
// object obj = this.dataGridView1.Rows[e.ColumnIndex].Cells[e.ColumnIndex].Value;
// int n = Convert.ToInt32(obj);//对不及格的成绩设置特殊样式
// if (n < 60)
// {
// DataGridViewCellStyle cellStyle = new DataGridViewCellStyle();
// cellStyle.ForeColor = Color.Red; // //this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = Color.Red;//设置小于60的数字显示为红色
// //this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.SelectionForeColor = Color.Red;
// //this.dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.Alignment = DataGridViewContentAlignment.MiddleRight;
// }
// }
//}
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
int intGrade = Convert.ToInt32(this.dataGridView1.Rows[e.RowIndex].Cells["courceNetDataGridViewTextBoxColumn"].Value);
if (intGrade < 60)
{
this.dataGridView1.Rows[e.RowIndex].Cells[1].Style.ForeColor = Color.Red;//设置小于60的数字显示为红色
this.dataGridView1.Rows[e.RowIndex].Cells[1].Style.SelectionForeColor = Color.Red;
this.dataGridView1.Rows[e.RowIndex].Cells[1].Style.Alignment = DataGridViewContentAlignment.MiddleRight;
}
} //foreach (DataRow row1 in dataGridView1.Rows)
//{
// DataGridViewRow gridRow = new DataGridViewRow();
// DataGridViewButtonCell btn_cell = new DataGridViewButtonCell();
// btn_cell.Value = "通过";
// for (int col_index = 0; col_index < dataGridView1.Columns.Count; col_index++)
// {
// DataGridViewTextBoxCell cell = new DataGridViewTextBoxCell();
// cell.Value = row1[col_index];
// gridRow.Cells.Add(cell);
// if (col_index == 3)
// {
// if (Convert.ToDecimal(row1[3]) < 60)
// {
// DataGridViewCellStyle cellStyle = new DataGridViewCellStyle();
// cellStyle.ForeColor = Color.Red;
// cell.Style = cellStyle;
// btn_cell.Value = "补考";
// }
// }
// }
// gridRow.Cells.Add(btn_cell);
// dataGridView1.Rows.Add(gridRow);
//}
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
if (e.Value != null)
{
string s = e.Value.ToString();
if (s == "111")
{
dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.ForeColor = Color.Red;
}
}
}
这个没问题 你再自己检查检查
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
// int eindex = e.RowIndex + 1;
if (e.RowIndex > -1)
{
int intGrade = Convert.ToInt32(this.dataGridView1.Rows[e.RowIndex].Cells["courceNetDataGridViewTextBoxColumn"].Value);
// MessageBox.Show(intGrade.ToString())
if (intGrade < 60)
{
this.dataGridView1.Rows[e.RowIndex].Cells["courceNetDataGridViewTextBoxColumn"].Style.ForeColor = Color.Red;//设置小于60的数字显示为红色
this.dataGridView1.Rows[e.RowIndex].Cells["courceNetDataGridViewTextBoxColumn"].Style.SelectionForeColor = Color.Red;
}
}
}
private void dataGridView1_CellPainting(object sender, DataGridViewCellPaintingEventArgs e)
{
// int eindex = e.RowIndex + 1;
if (e.RowIndex > -1)
{
int intGrade = Convert.ToInt32(this.dataGridView1.Rows[e.RowIndex].Cells["courceNetDataGridViewTextBoxColumn"].Value);
// MessageBox.Show(intGrade.ToString())
if (intGrade < 60)
{
this.dataGridView1.Rows[e.RowIndex].Cells["courceNetDataGridViewTextBoxColumn"].Style.ForeColor = Color.Red;//设置小于60的数字显示为红色
this.dataGridView1.Rows[e.RowIndex].Cells["courceNetDataGridViewTextBoxColumn"].Style.SelectionForeColor = Color.Red;
}
}
}依此类托 一般如果想要修改控件默认显示方式(颜色、字体、样式等等) 你可以注册一些类似CellPainting的事件 在事件处理程序中 根据条件(一般e参数可以获取想要的东西) 来自定义控件的显示方式控件内部一般这样实现的:
// ...
DataGridViewCellPaintingEventArgs e = new DataGridViewCellPaintingEventArgs(...);
if(CellPainting != null)
{
CellPainting(this,e); //
}
//接着绘制控件
//...
你要做的:
1.注册类似CellPaiting事件
2.通过e参数判断是否满足条件
3.修改显示方式