突出显示具有任何所选单元格的行的行标题

时间:2017-02-16 17:25:32

标签: c# winforms datagridview

我希望我的DataGridView突出显示已选择单元格的任何行的行标题。有办法吗?

(如果选择整行单元格,标准行为似乎只是突出显示行标题。)

我尝试过的事情:

我已经查看了DataGridView的反编译源代码以及我可以告诉的内容(肯定可能是错误的)它会根据是否选择了DataGridViewRow来突出显示标题。我无法弄清楚如何在没有实际选择整行的情况下设置所选行

1 个答案:

答案 0 :(得分:1)

之前我这样做的方法是处理Applicative事件,检查受影响的单元格行中的单元格,并相应地设置行标题。

CellStateChanged

您需要设置以下snippit以启用这些更改,如explained here

private void DataGridView1_CellStateChanged(object sender, DataGridViewCellStateChangedEventArgs e)
{
    bool selected = false;

    foreach (DataGridViewCell cell in e.Cell.OwningRow.Cells)
    {
        if (cell.Selected)
        {
            selected = true;
            break;
        }
    }

    e.Cell.OwningRow.HeaderCell.Style.BackColor = selected ?
        this.dataGridView1.RowHeadersDefaultCellStyle.SelectionBackColor :
        this.dataGridView1.RowHeadersDefaultCellStyle.BackColor;
}

未显示:当初始化所有内容时,还要考虑将标题单元格着色为this.dataGridView1.EnableHeadersVisualStyles = false;