2012-03-10 9 views
6

मैंने अपने फॉर्म पर एक चार्ट बनाया है।एक चार्ट में अंक का मूल्य ढूँढने के लिए

मैं चाहता हूं कि उपयोगकर्ता उस भाग पर क्लिक करके value, x_value और y_value एक गुब्बारे में प्रत्येक भाग को देखना चाहता है।

जब उपयोगकर्ता माउस को ले जाता है तो बैलून शोर गायब हो जाता है।

मैं यह कैसे कर सकता हूं?

उत्तर

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

मेरी आखिरी समस्या हल हो गई है। यह अच्छी तरह से काम करता है। अन्य सवाल: अगर मैं माउस_होवर का उपयोग करना चाहता हूं तो क्या आप कोड बदल सकते हैं ताकि उपयोगकर्ता माउस को घुमाकर मूल्यों को देख सके? –

+0

@AsmaGood: मेरे संपादन की जांच करें – digEmAll

संबंधित मुद्दे