Identificar la parte del DataGrid sobre la que se ha clicado

2056 vistas

La clase DataGrid.HitTestInfo nos permite determinar la parte de un control DataGrid sobre la cual ha clicado un usuario. Tendremos que:

  • Determinar las coordenadas del clic mediante el método HitTest
  • Usar la propiedad HitTestInfo.Type para recuperar un valor de la enumeración DataGrid.HitTestType

Implementaremos una clase MiDataGrid derivada de DataGrid capaz de dar la parte clicada.



vbnet
  1. '...
  2. Public Class MiDataGrid
  3.   Inherits DataGrid
  4.  
  5.   ' ...
  6.   ' propiedad pública que tendrá la parte clicada
  7.   Public ReadOnly Property ClickType() As DataGrid.HitTestType
  8.     Get
  9.       Return Me.currentClickType
  10.     End Get
  11.   End Property
  12.  
  13.   Private currentClickType As DataGrid.HitTestType
  14.  
  15.   ' sobrecarga de MyBase.OnMouseDown
  16.   Protected Overloads Overrides Sub OnMouseDown(ByVal e As MouseEventArgs)
  17.     Me.currentClickType = Me.HitTest(e.X, e.Y).Type
  18.     MyBase.OnMouseDown(e)
  19.   End Sub
  20. End Class



Veamos cómo usar esta clase:



vbnet
  1. Imports System.Text
  2. Imports System.Windows.Forms
  3. ' ...
  4. Private Sub DataGrid1MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
  5.   Dim dg As MiDataGrid = CType(sender, MiDataGrid)
  6.  
  7.   Dim sb As StringBuilder = New StringBuilder("La parte clicada es: ")
  8.   sb.Append(dg.ClickType.ToString)
  9.  
  10.   dg.CaptionText = sb.ToString()
  11. End Sub