Identificar la parte del DataGrid sobre la que se ha clicado

2033 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.



csharp
  1. //...
  2. public class MonDataGrid : DataGrid
  3. {
  4.   //...
  5.  
  6.   // propiedad pública que tendrá la parte clicada
  7.   public DataGrid.HitTestType ClickType
  8.   { get{ return this.currentClickType;}}
  9.  
  10.   private DataGrid.HitTestType currentClickType;
  11.  
  12.   // sobrecarga de MyBase.OnMouseDown
  13.   protected override void OnMouseDown(MouseEventArgs e)
  14.   {
  15.     this.currentClickType = this.HitTest(e.X,e.Y).Type;
  16.     base.OnMouseDown(e);
  17.   }
  18. }



Veamos cómo usar esta clase:



csharp
  1. using System.Text;
  2. //...
  3. private void DataGrid1MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
  4. {
  5.     MonDataGrid dg = (MonDataGrid)sender;
  6.  
  7.     StringBuilder sb = new StringBuilder("La parte clicada es: ");
  8.     sb.Append(dg.ClickType.ToString());
  9.  
  10.     dg.CaptionText = sb.ToString();
  11. }