2012-03-10 11 views
6

He hecho un cuadro en mi formulario.buscando el valor de los puntos en un gráfico

Quiero que el usuario vea el value, x_value y y_value de cada parte en un globo haciendo clic en esa parte.

El botón shoud desaparecerá cuando el usuario mueva el mouse.

¿Cómo puedo hacer eso?

Respuesta

8

Se podría hacer algo como esto:

ToolTip tooltip = new ToolTip(); 
    Point? clickPosition = null; 

    void chart1_MouseMove(object sender, MouseEventArgs e) 
    { 
     if (clickPosition.HasValue && e.Location != clickPosition) 
     { 
      tooltip.RemoveAll(); 
      clickPosition = null; 
     } 
    } 

    void chart1_MouseClick(object sender, MouseEventArgs e) 
    { 
     var pos = e.Location; 
     clickPosition = pos; 
     var results = chart1.HitTest(pos.X, pos.Y, false, 
            ChartElementType.PlottingArea); 
     foreach (var result in results) 
     { 
      if (result.ChartElementType == ChartElementType.PlottingArea) 
      { 
       var xVal = result.ChartArea.AxisX.PixelPositionToValue(pos.X); 
       var yVal = result.ChartArea.AxisY.PixelPositionToValue(pos.Y); 

       tooltip.Show("X=" + xVal + ", Y=" + yVal, 
          this.chart1, e.Location.X,e.Location.Y - 15); 
      } 
     } 
    } 

Resultado:

enter image description here

EDIT:

para mostrar la información sobre herramientas cuando el movimiento del ratón, se puede utilizar el código siguiente:

Point? prevPosition = null; 
ToolTip tooltip = new ToolTip(); 

void chart1_MouseMove(object sender, MouseEventArgs e) 
{ 
    var pos = e.Location; 
    if (prevPosition.HasValue && pos == prevPosition.Value) 
     return; 
    tooltip.RemoveAll(); 
    prevPosition = pos; 
    var results = chart1.HitTest(pos.X, pos.Y, false, 
           ChartElementType.PlottingArea); 
    foreach (var result in results) 
    { 
     if (result.ChartElementType == ChartElementType.PlottingArea) 
     { 
      var xVal = result.ChartArea.AxisX.PixelPositionToValue(pos.X); 
      var yVal = result.ChartArea.AxisY.PixelPositionToValue(pos.Y); 

      tooltip.Show("X=" + xVal + ", Y=" + yVal, this.chart1, 
         pos.X, pos.Y - 15); 
     } 
    } 
} 

Tenga en cuenta que esto muestra la información sobre herramientas en cualquier posición del gráfico. Si desea mostrarlo solo cuando el mouse está cerca de un punto de serie, puede usar una funcionalidad de mschart, p. :

yourSeries.ToolTip = "X=#VALX, Y=#VALY"; 

(más ejemplos) here

+0

gracias lot.When ejecutar el proyecto nada occures para mí. Los métodos mouse_Move y mouse_Click no se están ejecutando. ¿Debo agregar algo al gráfico? por ejemplo "chart1.Mouseclick .....". Tenga en cuenta que he hecho el gráfico de forma dinámica. –

+0

Mi último problema está resuelto. Funcionó bien. Otra pregunta: ¿Qué sucede si quiero usar mouse_hover? ¿Se puede cambiar el código para que el usuario pueda ver los valores al pasar el mouse? –

+0

@AsmaGood: verifique mi edición – digEmAll

Cuestiones relacionadas