C# 如何创建父子报表

C# 如何创建父子报表,c#,charts,report,mschart,C#,Charts,Report,Mschart,我尝试根据数据库中的表创建简单的winform报表。因为有很多聚合,我想创建一个父图表和可选的子图表。 下面是绘制“父”报告的核心 到目前为止,一切正常 正如您所看到的,X轴标签包含时间段-实际上是4或6个小时的时间段。 重点是创建另一个图表“子一”。当我点击serie元素时,它就会出现。所以现在的问题是如何将单击的x轴元素(实际上是日期字符串)的值读取到变量。我可以在工具提示上显示此值 chart1.Series[0].ToolTip = "#VALX" 但我找不到将其分配给变量的方法 我建

我尝试根据数据库中的表创建简单的winform报表。因为有很多聚合,我想创建一个父图表和可选的子图表。 下面是绘制“父”报告的核心

到目前为止,一切正常

正如您所看到的,X轴标签包含时间段-实际上是4或6个小时的时间段。 重点是创建另一个图表“子一”。当我点击serie元素时,它就会出现。所以现在的问题是如何将单击的x轴元素(实际上是日期字符串)的值读取到变量。我可以在工具提示上显示此值

chart1.Series[0].ToolTip = "#VALX"

但我找不到将其分配给变量的方法

我建议您从下载图表示例,因为它对这些图表有很大帮助。对于您的特定问题,您可以使用
Chart.HitTest
来确定鼠标单击(或移动)了哪个图表元素。类似于(我将其用于
MouseMove
,但您可以轻松地将其用于
MouseClick
或其他事件):

如果单击的图表元素是
数据点
,则可以根据需要获取x和/或y值。您可能需要考虑一件事:与其自己构造日期表示形式(
string X=dr[“date”].ToString()+“”+dr[“HOUR”].ToString();
),不如使用
DateTime
对象作为
DataPoint
的X值,并将图表格式设置为适合显示的格式(chart.axix.Format=“mmddyy hh”在伪代码中)。这将使创建子图表时更容易匹配点

还有一点:根据显示的代码,您不需要最后一行(
chart.DataBind();
)中的一行。您从不为图表指定
DataSource
,并且手动添加
DataPoints
,因此不需要数据绑定

chart1.Series[0].ToolTip = "#VALX"
private void ChartMouseMove(object sender, MouseEventArgs e)
    {
        try
        {
            HitTestResult[] htrList = Chart.HitTest(e.X, e.Y, false, ChartElementType.DataPoint);
            // loop through all of the elements in htrList, and make the "child" chart
        }
        catch (Exception)
        {
            StatusLabelText = "";
        }
    }