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