2013-01-21 237 views
2

我正在使用Visual Studio 2010和WFC創建數據點圖。要創建我的圖表,我有一個包含3個不同列的數據表;這些是日期,價值和序列。該表是從SQL查詢中動態生成的,然後在x軸上繪製日期並在y軸上繪製值。我試圖實現的是,當鼠標在圖表上的某個點上時,工具提示會顯示日期,值和與這些值相關的唯一序列。目前我正在使用創建動態圖表工具提示

myChart.Series["mySeries"].ToolTip = "XValue = #VALY \r\nDate = #VALX{d}"; 

但是,顯然這並不顯示序列號對這些值。我嘗試使用ToolTip事件,但嘗試從像素中的數據點轉換爲圖上的精確圖時出現了一些問題。我希望這個問題有道理。

回答

2

我解決了這個問題,與謝來@vikas。我沒有試圖分配一個通用的工具提示,而是爲每個點分配了一個單獨的工具提示。

 int points = 0; 

     //For every row in the values table, plot the date against the variable value 
     foreach (DataRow row in Values.Rows) 
     { 
      myChart.Series[Variable].Points.AddXY(Convert.ToDateTime(row["Date"].ToString()), row["Variable"].ToString());    
      myChart.Series[Variable].Points[points].ToolTip = Variable + " = #VALY \r\nDate = #VALX{d} \r\nSerial = " + row["Serial"].ToString(); 
      points += 1; 
     } 

因此,計數器從0開始,然後在數據表中的值加1點的數量和獨特的工具提示分配給每個點單獨的每一行。

+0

非常感謝。你節省了我的時間。 –

0

只是理念

For i As Integer = 0 To dt.Rows.Count - 1 
        StrSeries = Convert.ToString(dt.Rows(i)("Engage_Title")) 
        ChartRecentActivities.Series.Add(StrSeries) 
        ChartRecentActivities.Series(StrSeries).ChartType = SeriesChartType.Line 
        ChartRecentActivities.Series(StrSeries).MarkerStyle = MarkerStyle.Circle 
        ChartRecentActivities.Series(StrSeries).MarkerSize = 7 
        ChartRecentActivities.Series(StrSeries).BorderWidth = 3 
        ChartRecentActivities.Series(StrSeries).ShadowOffset = 2 
        ChartRecentActivities.Series(StrSeries).Legend = "Default" 
        ChartRecentActivities.Series(StrSeries).LegendText = StrSeries 
        ChartRecentActivities.Series(StrSeries).LegendToolTip = StrSeries 
        ChartRecentActivities.Series(StrSeries).ToolTip = StrSeries 

        For j As Integer = 0 To ChartRecentActivities.ChartAreas(0).Axes(0).CustomLabels.Count - 1 
         dv.RowFilter = "Engage_Title = '" & StrSeries & "' AND Transaction_Date = '" & ChartRecentActivities.ChartAreas(0).Axes(0).CustomLabels(j).Text & "'" 
         If (dv.Count > 0) Then 
          dblPoint = Convert.ToDouble(dv.Item(0)(0)) 
         Else 
          dblPoint = 0 
         End If 
         ChartRecentActivities.Series(StrSeries).Points.Add(dblPoint) 
         ChartRecentActivities.Series(StrSeries).Points(j).ToolTip = StrSeries & " = " & dblPoint.ToString() 
        Next 
       Next 

看看最後一行

ChartRecentActivities.Series(StrSeries).Points(j).ToolTip = StrSeries & " = " & dblPoint.ToString() 
+0

你想要點懸停點上的數據嗎? – vikas

+0

是的,它只是在徘徊時。以便最終用戶可以看到具有特定值的產品的序列號。謝謝。 – manicmonkey21421

+0

您是否應用了邏輯 – vikas