3

どの行が選択されていても、マウスが行の上にあるときに datagridview 行に下線フォントを取得したい。

私はそれを得る-半分:)

Private Sub aDgv_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles aDgv.MouseMove

    Dim hit As DataGridView.HitTestInfo = aDgv.HitTest(e.X, e.Y)
    If hit.Type = DataGridViewHitTestType.Cell Then
        aDgv.Rows(hit.RowIndex).DefaultCellStyle.Font = New Font(aDgv.DefaultCellStyle.Font, FontStyle.Underline)
    End If
End Sub

そのため、その行の行テキストに来ると(予想どおり)下線が引かれ、次の行に移動すると次の行に下線が引かれますが、以前は通常のフォントに戻りません。

マウスオーバーした行のテキストのみが下線付きになるようにするにはどうすればよいですか。
マウスが他の行に移動したときにフォントを通常にリセットする方法は?

4

1 に答える 1

3

通常の状態に戻すには、イベントFontを使用するだけですCellMouseLeave

Private Sub DataGridView1_MouseMove(sender As System.Object, e As System.Windows.Forms.MouseEventArgs) Handles DataGridView1.MouseMove
    Dim normalFont = New Font(DataGridView1.DefaultCellStyle.Font, FontStyle.Regular)
    Dim hit As DataGridView.HitTestInfo = DataGridView1.HitTest(e.X, e.Y)
    If hit.Type = DataGridViewHitTestType.Cell Then
        If DataGridView1.Rows(hit.RowIndex).Cells(hit.ColumnIndex).FormattedValue.ToString().Trim().Length > 0 Then
            DataGridView1.Rows(hit.RowIndex).DefaultCellStyle.Font = New Font(DataGridView1.DefaultCellStyle.Font, FontStyle.Underline)
        Else
            DataGridView1.Rows(hit.RowIndex).DefaultCellStyle.Font = normalFont
        End If
    End If
End Sub

Private Sub DataGridView1_CellMouseLeave(sender As System.Object, e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DataGridView1.CellMouseLeave
    Dim normalFont = New Font(DataGridView1.DefaultCellStyle.Font, FontStyle.Regular)
    If (e.ColumnIndex > -1) Then
        If e.RowIndex > -1 Then
            If DataGridView1.Rows(e.RowIndex).Cells(e.ColumnIndex).FormattedValue.ToString().Trim().Length > 0 Then
                DataGridView1.Rows(e.RowIndex).DefaultCellStyle.Font = normalFont
            Else
                DataGridView1.Rows(e.RowIndex).DefaultCellStyle.Font = normalFont
            End If
        End If
    End If
End Sub
于 2012-12-23T23:33:41.473 に答える