如何选择DataGridView.DefaultCellStyle时,如何保留背景和前景色?

时间:2016-07-21 20:14:31

标签: c# datagridview

Unselected Selected

当选择datagridview中的行时,行的背景颜色会被覆盖,用户无法确定该行所处的状态。

有没有办法在选择时不更改行的背景颜色?

1 个答案:

答案 0 :(得分:1)

您需要将SelectionXxxColors设置为您为行设置的颜色。

您可以使用SelectionChanged事件设置所选行的样式:

private void dataGridView2_SelectionChanged(object sender, EventArgs e)
{

    foreach (DataGridViewRow row in dataGridView2.SelectedRows)
    {
        row.DefaultCellStyle.SelectionBackColor = row.DefaultCellStyle.BackColor;
        row.DefaultCellStyle.SelectionForeColor = SystemColors.ControlText; 
                                               // row.DefaultCellStyle.ForeColor;
    }
    foreach (DataGridViewRow row in dataGridView2.Rows)
        row.DefaultCellStyle.Font = row.Selected ?
            new Font(dataGridView2.Font, FontStyle.Bold) : dataGridView2.Font;
}

注1:如果可能,您应该在为所有行设置常规颜色时设置SelectionXXXXColors,并且仅在选择更改时更改字体样式。

注意2:您可以使用SystemColors.ControlText代替DefaultCellStyle.ForeColor而不是实际设置它。