C# 用鼠标在Datachart上选择数据间隔

C# 用鼠标在Datachart上选择数据间隔,c#,.net,winforms,mschart,C#,.net,Winforms,Mschart,我使用堆叠面积图,我想用鼠标选择一个数据点间隔,如下所示 我知道有些应用程序提供了这一功能,但是我找不到如何做到这一点 你能告诉我怎么走吗?你需要的术语是 您可以使用以下属性组合: // a few short references: ChartArea ca = chart1.ChartAreas[0]; Axis ax = ca.AxisX; var cx = ca.CursorX; cx.IsUserEnabled = true;

我使用堆叠面积图,我想用鼠标选择一个数据点间隔,如下所示

我知道有些应用程序提供了这一功能,但是我找不到如何做到这一点

你能告诉我怎么走吗?

你需要的术语是

您可以使用以下属性组合:

    // a few short references:
    ChartArea ca = chart1.ChartAreas[0];
    Axis ax = ca.AxisX;
    var cx = ca.CursorX;


    cx.IsUserEnabled = true;             // allow a cursor to be placed
    cx.IsUserSelectionEnabled = true;    // allow it to be used for selecting
    ax.ScaleView.Zoomable = false;       // prevent from automatically zooming in
以下是选择的第一个和最后一个值:

var x1 = cx.SelectionStart;
var x2 = cx.SelectionEnd;
var p1 = s.Points.Select(x => x).Where(x => x.XValue >= x1).First();
var p2 = s.Points.Select(x => x).Where(x => x.XValue <= x2).Last();
textBox1.Text += (i2 - i1) + " points selected.\r\n\r\n";

for (int  i = i1; i < i2; i++)
{
    textBox1.Text += i + ".  " + chart1.Series[0].Points[i].ToString() + "\r\n";
    chart1.Series[0].Points[i].Color = Color.Red;

}
以下是选择的第一个和最后一个
数据点:

var x1 = cx.SelectionStart;
var x2 = cx.SelectionEnd;
var p1 = s.Points.Select(x => x).Where(x => x.XValue >= x1).First();
var p2 = s.Points.Select(x => x).Where(x => x.XValue <= x2).Last();
textBox1.Text += (i2 - i1) + " points selected.\r\n\r\n";

for (int  i = i1; i < i2; i++)
{
    textBox1.Text += i + ".  " + chart1.Series[0].Points[i].ToString() + "\r\n";
    chart1.Series[0].Points[i].Color = Color.Red;

}
现在,您可以知道选择了哪些点:

var x1 = cx.SelectionStart;
var x2 = cx.SelectionEnd;
var p1 = s.Points.Select(x => x).Where(x => x.XValue >= x1).First();
var p2 = s.Points.Select(x => x).Where(x => x.XValue <= x2).Last();
textBox1.Text += (i2 - i1) + " points selected.\r\n\r\n";

for (int  i = i1; i < i2; i++)
{
    textBox1.Text += i + ".  " + chart1.Series[0].Points[i].ToString() + "\r\n";
    chart1.Series[0].Points[i].Color = Color.Red;

}
textBox1.Text+=(i2-i1)+“选定点。\r\n\r\n”;
对于(int i=i1;i

注意:标识起点和终点的代码假设所有
数据点
都是以递增的x值顺序添加的。由于您可以按任何顺序添加
数据点
,例如,当您插入无序点时,它将失败!在这种情况下,您可以在
列表中收集选择中的点(两侧测试),然后枚举此列表

哇,谢谢你。我将尝试实现它,并让您知道这是否有效。非常感谢。