Question

Je souhaite désactiver la sélection de certaines lignes dans une vue datagrid.

Il doit être possible de supprimer la propriété select pour une ou plusieurs lignes datagridview dans une vue datagridview affichée dans un formulaire Win. L'objectif est que l'utilisateur ne puisse pas sélectionner certaines lignes. (selon les conditions)

Merci,

Était-ce utile?

La solution

Si SelectionMode a la valeur FullRowSelect, vous devez remplacer SetSelectedRowCore pour cette vue DataGridView et ne pas appeler la base SetSelectedRowCore pour les lignes que vous ne souhaitez pas sélectionner.

Si SelectionMode n'est pas FullRowSelect, vous voudrez également remplacer SetSelectedCellCore (et ne pas appeler la base SetSelectedCellCore pour les lignes que vous ne souhaitez pas sélectionner), car SetSelectedRowCore n'interviendra que si vous cliquez sur l'en-tête de la ligne et non sur un individu. cellule.

Voici un exemple:

public class MyDataGridView : DataGridView
{
    protected override void SetSelectedRowCore(int rowIndex, bool selected)
    {
        if (selected && WantRowSelection(rowIndex))
        {
            base.SetSelectedRowCore(rowIndex, selected);
        }
     }

     protected virtual void SetSelectedCellCore(int columnIndex, int rowIndex, bool selected)
     {
         if (selected && WantRowSelection(rowIndex))
         {
            base.SetSelectedRowCore(rowIndex, selected);
          }
     }

     bool WantRowSelection(int rowIndex)
     {
        //return true if you want the row to be selectable, false otherwise
     }
}

Si vous utilisez WinForms, ouvrez votre designer.cs pour le formulaire approprié et modifiez la déclaration de votre instance DataGridView pour utiliser cette nouvelle classe à la place de DataGridView, et remplacez également this.blahblahblah = new System.Windows .Forms.DataGridView () pour pointer vers la nouvelle classe.

Autres conseils

Private Sub dgvSomeDataGridView_SelectionChanged(sender As Object, e As System.EventArgs) Handles dgvSomeDataGridView.SelectionChanged
        dgvSomeDataGridView.ClearSelection()
End Sub
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top