datagridview und contextmenu currentrow

Maggo13

Grünschnabel
Hy,

habe ein kleines Problem. Ich habe ein Datagridview und diesem ein contextmenustrip zugeordnet.

Nur wenn wenn das Kontextmenü aufrufe, erkennt es nicht die row des datagridviews. Es nimmt immer den ersten Eintrag (Index), auch wenn ich mit rechts auf den zweiten geklickt habe um das Kontextmenü aufzurufen.

Wie bekomme ich es geregelt, das das Kontextmenü auch die row des angeglickten Eintrags des datagridviews erkennt?

Jemand eine idee?

Gruß
Marco
 
Habe eine Lösung gefunden:

Code:
    Private Sub DGVTermine_CellMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGVTermine.CellMouseMove
        With DGVTermine
            .CurrentRow.Selected = False
            '.CurrentCell.Selected = False
            '.Rows(e.RowIndex).Cells(e.ColumnIndex).Selected = True
            .Rows(e.RowIndex).Selected = True
            .CurrentCell = .SelectedCells(0)
        End With
    End Sub

Da ich auf die ganze Row gehe sind die Teile mit den Cells ausdokumentiert...

Gruß
Maggo13
 
Wie bekomme ich es geregelt, das das Kontextmenü auch die row des angeglickten Eintrags des datagridviews erkennt?

Wieso eigentlich mit Mousemove?

Wenn du das Ereignis: CellClick des DataGridView implementierst und du das Event Object abfragst, bekommst du sowohl den RowIdex als auch den ColumnIndex geliefert.
Also e.RowIndex bzw. e.ColumnIndex
 
Wieso Mousemove? Weil ich die Rows farblich ändere, bei drüberfahren. Es muss folglich ständig geprüft werden, wo die Maus steht.

Hier der neue Code:

Code:
    Private Sub DGVTermine_CellMouseMove(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellMouseEventArgs) Handles DGVTermine.CellMouseMove
        Debug.Print(e.RowIndex.ToString)
        With DGVTermine
            .Rows(e.RowIndex).Selected = True
            .CurrentCell = .Item(3, e.RowIndex)
        End With
    End Sub

    Private Sub DGVTermine_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles DGVTermine.MouseHover
        altfarbe = Me.DGVTermine.RowsDefaultCellStyle.SelectionBackColor
        Me.DGVTermine.RowsDefaultCellStyle.SelectionBackColor = FromArgb(251, 230, 148)
    End Sub

    Private Sub DGVTermine_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles DGVTermine.MouseLeave
        Me.DGVTermine.RowsDefaultCellStyle.SelectionBackColor = altfarbe
    End Sub

Gruß
Marco
 
Zurück