2

Visual Studio 2010 と WFC を使用してデータの点グラフを作成しています。チャートを作成するために、3 つの異なる列を持つデータテーブルがあります。これらは、日付、値、およびシリアルです。このテーブルは SQL クエリから動的に生成され、x 軸に日付、y 軸に値をプロットします。私が達成しようとしているのは、マウスがチャート上のポイントにあるとき、ツール ヒントに、日付、値、およびこれらの値に関連する一意のシリアルが表示されることです。現時点で私が使用している

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

ただし、これらの値に対してシリアル番号が表示されないことは明らかです。ToolTip イベントを使用してみましたが、ピクセル単位のデータポイントからグラフ上の正確なプロットに変換しようとすると、いくつかの問題が発生しました。この質問が理にかなっていることを願っています。

4

2 に答える 2

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 が追加され、各ポイントに個別に Unique ToolTip が割り当てられます。

于 2013-01-21T23:25:04.323 に答える
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()
于 2013-01-21T11:32:32.827 に答える