2012-04-03 21 views
6

マウスの下の行が強調表示されるように、フォーム上にDataGridViewを設定しようとしています。私は、現在選択されている行がMouseEnterで強調表示されない点を除いて、次の点を扱っています。マウスオーバー時にDataGridviewの選択された行のバックカラーを変更します

フォームには4つの個別のDataGridViewが含まれ、強調表示されている行はマウスカーソルの下にある行のみになります。

Private Sub dgvPrjDwgs_CellMouseEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseEnter 
     If e.RowIndex > -1 Then 
      dgvPrjDwgs.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.BlanchedAlmond 
     End If 
End Sub 

Private Sub dgvPrjDwgs_CellMouseLeave(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseLeave 
     If e.RowIndex > -1 Then 
      dgvPrjDwgs.Rows(e.RowIndex).DefaultCellStyle.BackColor = Color.DimGray 
     End If 
End Sub 

次の写真は、選択されていないランダムな行の上にマウスを置いたものです。ベージュはハイライトの色です。

Highlight, highlight, you so fine, you so fine you blow my mind!

この写真は、現在選択されている行の上にマウスです。マウスが上に来たときにバックカラーをBlanchedAlmondに変更したい。

Why you no highlight when I want.

だから、私は考えて変更し、その行選択された1つを作るためのMouseEnterを使用してみました。それは素晴らしい作品です。しかし、マウスがデータグリッドを離れ、別のグリッドに移動すると、行が選択されたままになります(悪い)。選択したBackColorを非選択のBackColorに合わせて設定しようとしましたが、今では強調表示されません。

Private Sub dgvPrjDwgs_CellMouseEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseEnter 
    dgvPrjDwgs.DefaultCellStyle.SelectionBackColor = Color.BlanchedAlmond 
    If e.RowIndex > -1 Then 
     dgvPrjDwgs.Rows(e.RowIndex).Selected = True 
    End If 
End Sub 
Private Sub dgvPrjDwgs_CellMouseLeave(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseLeave 
    dgvPrjDwgs.DefaultCellStyle.SelectionBackColor = Color.DimGray 
End Sub 

ヘルプ

答えて

5

:)をしてください、それが動作するようになりました。

私はRowsDefaultCellStyleの代わりにDefaultCellStyleを使用していました。ここに最終的なコードがあります。

Private Sub dgvPrjDwgs_CellMouseEnter(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseEnter 
     dgvPrjDwgs.RowsDefaultCellStyle.SelectionBackColor = Color.BlanchedAlmond 
     If e.RowIndex > -1 Then 
      dgvPrjDwgs.Rows(e.RowIndex).Selected = True 
     End If 
    End Sub 
    Private Sub dgvPrjDwgs_CellMouseLeave(sender As Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles dgvPrjDwgs.CellMouseLeave 
     dgvPrjDwgs.RowsDefaultCellStyle.SelectionBackColor = Color.DimGray 
    End Sub 
関連する問題