DevAdmin Blog

Blog di Ermanno Goletto (Microsoft MVP Directory Services - MCSE - MCSA - MCITP - MCTS)
posts - 1026, comments - 598, trackbacks - 8

My Links

News

Il blog si è trasferito al seguente link:

www.devadmin.it

Avatar

Visualizza il profilo di Ermanno Goletto su LinkedIn

Follow ermannog on Twitter


Il contenuto di questo blog e di ciascun post viene fornito “così come é”, senza garanzie, e non conferisce alcun diritto. Questo blog riporta il mio personale pensiero che non riflette necessariamente il pensiero del mio datore di lavoro.

Logo Creative Commons Deed


Logo SysAdmin.it SysAdmin.it Staff


Logo TechNet Forum TechNet Italia @ForumTechNetIt Follow TechNet Forum on Twitter


Logo MVP

Article Categories

Archives

Post Categories

Blogs

Friends

Knowledge Base

MVP Sites

Resources

DataGrid Single Selection

Come molti di voi sapranno per far sì che sul DataGrid si possa selezionare una sola riga si ricorre spesso alla soluzione reperibile su Syncfusion.com di cui riporto di seguito il codice:

 

Public Class MyDataGrid
   Inherits DataGrid

 

   Private oldSelectedRow As Integer

 

   Protected Overloads Overrides Sub OnMouseMove(ByVal e As MouseEventArgs)
     
 'don't call the base class if left mouse down
       If (e.Button <> MouseButtons.Left) Then
          MyBase.OnMouseMove(e)
       End If
   End Sub

 

   Protected Overloads Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
      'don't call the base class if in header
     
Dim hti As DataGrid.HitTestInfo
      hti =
Me.HitTest(New Point(e.X, e.Y))

 

     If (hti.Type = DataGrid.HitTestType.Cell) Then
       
If (oldSelectedRow > -(1)) Then
          
Me.UnSelect(oldSelectedRow)
       
End If

           oldSelectedRow = -(1)

           MyBase.OnMouseDown(e)
     Else

 

        If (hti.Type = DataGrid.HitTestType.RowHeader) Then
          
If (oldSelectedRow > -(1)) Then
             
Me.UnSelect(oldSelectedRow)
          
End If

 

           If ((Control.ModifierKeys And Keys.Shift) = 0) Then
             
MyBase.OnMouseDown(e)
          
Else
             
Me.CurrentCell = New DataGridCell(hti.Row, hti.Column)
           End If

 

           Me.Select(hti.Row)
           oldSelectedRow = hti.Row
       End If
     End If

 

   End Sub

 

End Class

Ciò però non è sufficiente infatti se l'utente preme la combinazione di tasti Ctrl+A seleziona tutte le righe.

Bisogna quindi aggiungere il seguente codice:

 

Protected Overrides Function ProcessDialogKey(ByVal keyData As System.Windows.Forms.Keys) As Boolean

 

   If keyData = (Windows.Forms.Keys.Control Or Windows.Forms.Keys.A) Then Return True

   Return

MyBase.ProcessDialogKey(keyData)

 

End Function

Print | posted on Thursday, September 30, 2004 5:15 PM | Filed Under [ Code, Snippets & Scripts .NET ]

Powered by:
Powered By Subtext Powered By ASP.NET