2012-05-22 11 views
6

Estoy tratando de hacerlo de modo que cuando el usuario pase sobre una fila en mi DataGrid/dataview, cada fila muestre un resultado diferente de información sobre herramientas.Información sobre herramientas dinámica dependiendo del mouse sobre una fila en una cuadrícula de datos (NO datagridview)

No puedo entender esto. con DataGrid, ¿cómo puedo decir mouseOver en cada fila y dar datos específicos de la fila? ¡parece que todas mis fuentes habituales en línea no han revelado nada!

no si hay una manera de hacer que esto funcione con una vista de tabla de datos No sé cómo poblarla (vista de tabla de datos) ya que mi tabla varía en longitud cada vez que se ejecuta el programa. (el programa realiza un seguimiento de las señales, por lo que si se reciben más señales, la tabla tiene más filas ...)

* nota: esto es visual C# 2.0 en visual studios 2005 enviroment.

* terminaron con lo siguiente:

private void datagridSignal_MouseMove(object sender, MouseEventArgs e) 
{ 
     this.toolTip.Hide(datagridSignal); 
     this.toolTip.RemoveAll(); 
     DataTable dt = GetSignalTable(); 
     DataView dv = new DataView(dt); 
     Point prop = new Point(e.X, e.Y); 
     System.Windows.Forms.DataGrid.HitTestInfo myHitTest; 
     prop = datagridSignal.PointToClient(prop); 
     myHitTest = datagridSignal.HitTest(prop.X, prop.Y); 
     this.toolTip.SetToolTip(datagridSignal, " ID = '" + (int)dv[myHitTest.Row][0] + "' "); 
} 

Respuesta

1

¿Por qué no se maneja evento MouseMove en la parrilla? A continuación, puede transformar las coordenadas del mouse en el controlador de fila y cambiar la información sobre herramientas de la cuadrícula en consecuencia.

Algo así como:

private void dataGrid_MouseMove(object sender, MouseEventArgs e) { 
var point = dataGrid.PointToClient(e.X, e.Y); 
var hittest = dataGrid.HitTest(point.X, point.Y); 
toolTip1.SetToolTip(dataGrid, hittest.Row); // add Tooltip conotrol to the form!!! 
} 
+0

cómo? si hiciera DataGridSignal_MouseMove (object remitente, EventArgs e) {??? ??? this.tooltip.settooltip (datagrid, (int) dz.Table.Columns.Count); } ¿qué pongo dentro de la función/método? esta es la porción que estoy atrapado en – DarthSheldon

+0

He actualizado mi respuesta. –

+0

ah, sí, intenté esto una vez, pero me aparece un error al intentar declarar 'MouseEventArgs e' en los parámetros de la función. private void dataGridCurrAlarms_MouseMove (remitente del objeto, MouseEventArgs e) { Point prop = new Point (e.X, e.Y); prop = dataGridCurrAlarms.PointToClient (prop); var hittest = dataGridCurrAlarms.HitTest (prop.X, prop.Y); this.toolTip.SetToolTip (dataGridCurrAlarms, hittest.Row); } es lo que estoy intentando pero todavía no es bueno. var no es una cosa ... – DarthSheldon

2

Usted puede hacer esto en XAML:

<extToolkit:DataGrid Name="dgData" AutoGenerateColumns="False"> 
      <extToolkit:DataGrid.RowStyle> 
       <Style TargetType="{x:Type extToolkit:DataGridRow}"> 
        <Style.Triggers> 
         <Trigger Property="IsMouseOver" Value="True"> 
          <Setter Property="ToolTip" Value="{Binding RelativeSource={RelativeSource Mode=Self}, Path=DataContext.ID}" /> 
         </Trigger> 
        </Style.Triggers> 
       </Style> 
      </extToolkit:DataGrid.RowStyle> 
      <extToolkit:DataGrid.Columns> 
       <extToolkit:DataGridTextColumn Header="ID" Binding="{Binding ID}" /> 
       <extToolkit:DataGridTextColumn Header="First Data" Binding="{Binding FirstData}" /> 
       <extToolkit:DataGridTextColumn Header="Second Data" Binding="{Binding SecondData}" />    
      </extToolkit:DataGrid.Columns> 
     </extToolkit:DataGrid> 
+0

No sé nada sobre XAML o XML ¿qué haría con esto? – DarthSheldon

+0

No escribió antes que sea .NET 2.0. ¡Lo siento! – kmatyaszek

+0

no le preocupa que uno esté conmigo: P – DarthSheldon

Cuestiones relacionadas