2012-03-10 6 views
6

나는 내 양식에 차트를 만들었습니다.차트의 점수 값을 찾습니다

사용자가 해당 부분을 클릭하여 풍선의 각 부분에있는 value, x_valuey_value을 볼 수있게하려고합니다.

사용자가 마우스를 움직이면 ballon shoud가 사라집니다.

어떻게하면됩니까?

답변

8

당신이 뭔가를 할 수 있습니다 :

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

결과 :

enter image description here

편집 :

마우스 이동, 당신은을 사용할 수 있습니다 때마다 툴팁을 보여 다음 코드 :

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

차트의 모든 위치에 툴팁이 표시됩니다. 마우스가 시리즈 지점 근처에있을 때만 표시하려면 mschart 기능을 사용할 수 있습니다. :

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

(더 예 here)

+0

감사 lot.When 프로젝트 아무것도 실행하지 것은 나를 위해 occures. mouse_Move 및 mouse_Click 메서드가 실행되고 있지 않습니다. 차트에 어떤 것을 추가해야합니까? 예 : "chart1.Mouseclick .....". 나는 차트를 다이나믹하게 만들었다. –

+0

내 마지막 문제가 해결되었습니다. 잘되었습니다. 다른 질문 : mouse_hover를 사용하려면 어떻게해야합니까? 사용자가 마우스를 가리켜 값을 볼 수 있도록 코드를 변경할 수 있습니까? –

+0

@AsmaGood : 내 편집을 확인하십시오. – digEmAll

관련 문제