2012-03-10 19 views
6

Formumda bir grafik hazırladım.Bir tablodaki noktaların değerini bulma

Kullanıcının, bu bölümün üzerine tıklayarak bir balonun her bir parçasının value, x_value ve y_value numaralarını görmesini istiyorum. Kullanıcı fareyi hareket ettirdiğinde ballon shoud kayboluyor.

Bunu nasıl yapabilirim?

cevap

8

Böyle bir şey yapabileceğini:

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

Sonuç:

enter image description here

DÜZENLEME:

fare hareket, kullanabileceğiniz her ipucunu göstermek için aşağıdaki 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); 
     } 
    } 
} 

Bu, araç ipucunu, grafiğin herhangi bir konumunda gösterir. Yalnızca farenin bir dizi noktasına yaklaştığında göstermek isterseniz, mschart işlevini kullanabilirsiniz. :

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

(başka örnekler here)

+0

teşekkürler lot.When proje şey çalıştıran benim için occures. Mouse_Move ve mouse_Click yöntemleri çalışmıyor. Grafiğe herhangi bir şey ekleyebilir miyim? excample için "chart1.Mouseclick .....". Grafiği dinamik olarak yaptığımı not edin. –

+0

Son sorunum çözüldü.İyi bir şekilde çalıştı: başka bir soru: Eğer mouse_hover.Com kullanmak istersem, kodu değiştirerek kullanıcı fareyi gezdirerek değerleri görebilir? –

+0

@AsmaGood: Düzenlememi kontrol et – digEmAll

İlgili konular