プログラムを閉じずにフォームをリロードすると、最初の行が強調表示されることがあります。ただし、選択されず、選択された行インデックスに対して-1が返されます。
次のように実行できます。
1. フォームの読み込み時にデフォルト スタイルを保存します。
Public Class aRoots
Dim df1, df2, df3, df4 As Color
Private Sub aRoots_Load(sender As Object, e As EventArgs) Handles Me.Load
df1 = DGV_Root.DefaultCellStyle.SelectionBackColor
df2 = DGV_Root.DefaultCellStyle.BackColor
df3 = DGV_Root.DefaultCellStyle.SelectionForeColor
df4 = DGV_Root.DefaultCellStyle.ForeColor
2. datagridview を操作するときにセル スタイルを変更します。
Private Sub LoadRoot()
For i = 0 To 5
DGV_Root.Rows.Add()
For j = 0 To 3
DGV_Root.Item(j, i).Value = ...
Next
Next
'DGV_Root.ClearSelection() ==> instead of this use 2 lines below
DGV_Root.DefaultCellStyle.SelectionBackColor = df2
DGV_Root.DefaultCellStyle.SelectionForeColor = df4
End Sub
3. cell_click や cell_double click のように選択が変更されている場合、セル スタイルをデフォルトに変更します。
Private Sub DGV_Root_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles DGV_Root.CellMouseClick
DGV_Root.DefaultCellStyle.SelectionBackColor = df1
DGV_Root.DefaultCellStyle.SelectionForeColor = df3
...
End Sub
4.フォームを閉じたい場合は、すべてをデフォルトに戻します。
Private Sub PbClose_Click(sender As Object, e As EventArgs) Handles PbClose.Click
BtnCancel.PerformClick()
DGV_Root.DefaultCellStyle.SelectionBackColor = df1
DGV_Root.DefaultCellStyle.BackColor = df2
DGV_Root.DefaultCellStyle.SelectionForeColor = df3
DGV_Root.DefaultCellStyle.ForeColor = df4
Me.Close()
End Sub
これが皆さんのお役に立てば幸いです。