RT,想在datagridview中选中某一行数据的情况下,将鼠标选中的单元格颜色突出显示,请问能不能实现?
一开始使用
private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected)
            {
                DataGridViewCell aa = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                aa.Style.ForeColor = Color.Red;
                aa.Style.BackColor = Color.LightGreen;
            }
        }
只能实现在不选中改行的情况下颜色突出显示。但是在选中的情况下,选中颜色会将其盖掉,看不出差别

解决方案 »

  1.   


    dataGridView1.Rows[e.RowIndex].DefaultCellStyle.BackColor = Color.Red;
      

  2.   

    private void SetColor()
           {
                if (dgv.Rows.Count > 0)
                {
                    for (int i = 0; i < dgv.Rows.Count; i++)
                    {
                        if ()//变色条件
                        {
                            dgv.Rows[i].DefaultCellStyle.ForeColor = System.Drawing.Color.Red;
                        }
                    }
                }
            }
    加载完数据以后,调用上面的函数
      

  3.   

           {
                if (dgv_Name.Rows.Count > 0)
                {
                    for (int i = 0; i < dgv_Name.Rows.Count; i++)
                    {
                        if (Convert.ToString(dgv_Name.Rows[i].Cells[str_ColumnName].Value) == "1")
                        {
                            dgv_Name.Rows[i].DefaultCellStyle.ForeColor = System.Drawing.Color.Red;
                        }
                    }
                }
            }
      

  4.   

    sorry,不知道是不是我没表达清楚,请试试看选中的情况下:如图:选中行的情况下,选中单元格凸显其他颜色
      

  5.   

    你试试看在那个属性rowtemplate里的,打开DefaultCellStyle,里面有SelectionBackColor和SelectionForeColor
      

  6.   

    有没有rowPrePaint事件?
            private void dgv_RowPrePaint_1(object sender, DataGridViewRowPrePaintEventArgs e)
            {            dgv.Rows[e.RowIndex].Cells["A"].Style.SelectionBackColor = Color.Red;
            }
      

  7.   

    thanks,我也刚刚试出来
    public DataGridViewCell dgvc;
            private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
            {
                if (dgvc != null) dgvc.Style.SelectionBackColor = _color;
                if (dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Selected)
                {
                    DataGridViewCell aa = dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex];
                    //aa.Style.ForeColor = Color.Red;
                    aa.Style.SelectionBackColor = Color.Red;
                    dgvc = aa; ;
                }
            }
      

  8.   

     private void dataGridView1_CellMouseDown(object sender, DataGridViewCellMouseEventArgs e)
            {
                dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Style.SelectionBackColor = Color.Red;
            }
      

  9.   

    参考了下   在mousedown 效果会更好