2016-05-19 2 views
0

Je suis en train de migrer le code VB6 vers VB.NET et nous sommes à l'étape VS2013, en utilisant .NET 4.5.2. Dans le code d'origine, il y a des FlexGrids qui permettent la suppression de ligne en double-clic et sélection/désélection de ligne en un seul clic. J'ai double-clic va bien, il supprime la ligne et définit toutes les lignes comme désélectionné (parce que double-cliquer sur la cellule d'en-tête était réorganiser les lignes et sélectionner une ligne, sans un clic sur la ligne, puis en supprimant le ligne maintenant sélectionnée). Je ne sais pas si c'est pertinent, mais je l'ai inclus au cas où.Désélectionnez/désélectionnez la ligne dans DataGridView sur le clic

J'ai regardé here mais cela n'aide pas parce que ce comportement est attendu et je ne sais pas si le client voudra entendre que tout le monde doit être re-entraîné pour utiliser la méthode CTRL + clic pour désélectionner . Si c'est comme ça que ça doit être, alors qu'il en soit ainsi, mais je dois essayer de faire fonctionner ça.

Utilisation de l'événement click cellulaire pour faire quelque chose comme ça

Private Sub grdSelectedOps_CellClick(sender As Object, e As DataGridViewCellEventArgs) Handles grdSelectedOps.CellClick 
    If Not grdSelectedOps(e.ColumnIndex, e.RowIndex).Selected Then 
     grdSelectedOps(grdSelectedOps.CurrentCell.ColumnIndex, grdSelectedOps.CurrentCell.RowIndex).Selected = True 

    Else 
     grdSelectedOps(grdSelectedOps.CurrentCell.ColumnIndex, grdSelectedOps.CurrentCell.RowIndex).Selected = False 
    End If 
End Sub 

ne fonctionne pas, parce que si vous avez cliqué sur la cellule que vous avez sélectionné, donc il toujours immédiatement désélectionne. Le multi-sélection est désactivé. Est-ce possible?

Répondre

2

réponse à votre question ici:

Toggle Selection in DataGrid

Il est donc C# voici le code équivalent VB.NET est:

REM Keeps track of selection status 
Private selectionChanged As Boolean 

REM Fires Second 
Private Sub dataGridView1_CellClick(sender As Object, e As DataGridViewCellEventArgs) 
    If Not selectionChanged Then 
     dataGridView1.ClearSelection() 
     selectionChanged = True 
    Else 
     selectionChanged = False 
    End If 
End Sub 

REm Fires first 
Private Sub dataGridView1_SelectionChanged(sender As Object, e As EventArgs) 
    selectionChanged = True 
End Sub 

Vous pouvez vouloir remplacer le contrôle DataGrid pour fournir cette fonctionnalité en interne, mais cela dépend de vous.

+0

MERCI. C'est exactement ce dont j'avais besoin! – pixelmeow

+0

:) Codage heureux – mike100111