效果直接在DataGridView的屬性中可以設置,選中記錄時的模式是選擇整行即可。
要求是選中的行變色,代碼如下
事件是RowPrePaint。
這個思路是先得到當前的行。RowPrePaint事件應該是每Paint一行之前的事件,所以對行進行檢查,如果滿足要求就設置成想要的樣式即可。因爲要把非當前行還原樣式,所以記錄了之前的顏色,估計直接記錄Style也是一種好方法。
- void DataGridView1RowPrePaint(object sender, DataGridViewRowPrePaintEventArgs e)
- {
- if (e.RowIndex >= dataGridView1.Rows.Count - 1)
- return;
- var row = (sender as DataGridView).Rows[e.RowIndex];
- try
- {
- Color oldForeColor = new Color();
- Color oldBackColor = new Color();
- if (row == (sender as DataGridView).CurrentRow) {
- if(row.DefaultCellStyle.ForeColor != Color.White)
- {
- oldForeColor = row.DefaultCellStyle.ForeColor;
- row.DefaultCellStyle.ForeColor = Color.White;
- }
- if(row.DefaultCellStyle.BackColor != Color.Blue)
- {
- oldBackColor = row.DefaultCellStyle.BackColor;
- row.DefaultCellStyle.BackColor = Color.Blue;
- }
- }
- else
- {
- row.DefaultCellStyle.ForeColor = oldForeColor;
- row.DefaultCellStyle.BackColor = oldBackColor;
- }
- }
- catch (Exception)
- {
- }
- }