【问题标题】:MSChart Horizontal Min x and Max x ValuesMSChart 水平最小 x 和最大 x 值
【发布时间】:2012-10-05 04:21:28
【问题描述】:

我已经成功地在多个图表区域上实现了一系列系列,这些区域在放大时都很好地滚动在一起。

当数据首次呈现时,最小和最大 X 值(日期/时间)由我从 SQL 中提取的数据确定。用户虽然可以选择放大图表,此时会出现水平滚动条。到目前为止一切顺利。

我想要实现的是在我的 WinForm 上的某处有两个文本控件,它们将显示当前正在查看的 Min 和 Max X 值,当用户向左或向右移动水平滚动条时,这些值应该会自动更新.

我应该查看哪些属性和方法?

谢谢, KH

【问题讨论】:

    标签: mschart


    【解决方案1】:

    您可以使用 AxisViewChanged 事件并检查可见范围内的系列点。这是我的意思的一个例子:

    void chart1_AxisViewChanged(object sender, System.Windows.Forms.DataVisualization.Charting.ViewEventArgs e)
    {
        var left = e.ChartArea.CursorX.SelectionStart;
        var right = e.ChartArea.CursorX.SelectionEnd;
        var top = e.ChartArea.CursorY.SelectionStart;
        var bottom = e.ChartArea.CursorY.SelectionEnd;
    
        foreach (var series in this.chart1.Series)
        {
            if (series.ChartArea == e.ChartArea.Name)
            {
                var pointsInRange = series.Points.Where(p => p.XValue <= right && p.XValue >= left &&
                                                                p.YValues[0] <= top && p.YValues[0] >= bottom);
                if (pointsInRange.Any())
                {
                    var minY = pointsInRange.Min(p => p.YValues[0]);
                    var maxY = pointsInRange.Max(p => p.YValues[0]);
    
                    // print the points in your textbox
                    textBox1.AppendText("Series: " + series.Name + " min visible Y=" + minY + " max visibleY=" + maxY + Environment.NewLine);
                }
            }
        }
    }
    

    【讨论】:

    • 谢谢,这足以让我咬牙切齿。
    • @user1480025:很高兴能提供帮助。如果您认为这是一个很好的答案,您应该考虑支持或接受它;)
    猜你喜欢
    • 1970-01-01
    • 2014-04-10
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-01
    • 1970-01-01
    • 2016-09-30
    相关资源
    最近更新 更多