2012-03-10 11 views
6

Zrobiłem wykres na moim formularzu.ustalanie wartości punktów na wykresie

Chcę, aby użytkownik zobaczył value, x_value i każdej części balonu, klikając tę ​​część.

Ballon shoud zniknie, gdy użytkownik poruszy myszą.

Jak mogę to zrobić?

Odpowiedz

8

Można zrobić coś takiego:

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); 
      } 
     } 
    } 

Wynik:

enter image description here

EDIT:

pokazać etykietkę, gdy ruch myszy, można użyć następujący kod:

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); 
     } 
    } 
} 

Należy zauważyć, że pokazuje to etykietkę narzędzia w dowolnym położeniu na wykresie. Jeśli chcesz wyświetlić go tylko wtedy, gdy mysz znajduje się w pobliżu punktu serii, możesz użyć funkcji mschart np. :

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

(dalsze przykłady here)

+0

dziękuję lot.When uruchamiając projekt occures nic dla mnie. Metody mouse_Move i mouse_Click nie działają. Czy mogę dodać coś do wykresu? na przykład "chart1.Mouseclick .....". Zauważ, że zrobiłem tabelę dinamicznie. –

+0

Mój ostatni problem został rozwiązany. To działało dobrze. Inne pytanie: Co zrobić, jeśli chcę użyć mouse_hover.Can zmienić kod tak, aby użytkownik mógł zobaczyć wartości przez najechanie myszą? –

+0

@AmamaGood: sprawdź moją edycję – digEmAll

Powiązane problemy