向MS Chart控件添加滚动条C#

Wis*_*_c_ 4 c# mschart winforms

请理解我知道有关于这个问题的其他线索,但我的需求是不同的.

基本上在我看到人们说用MSChart实现滚动条之前,他们使用了

.Size = ...

要么

.View = ...

但是,这会使滚动条自动显示,并且此滚动条包含一个按钮,单击该按钮会导致条形图消失,使图表显示所有数据,并且无法在不重新启动应用程序的情况下将滚动条带回图表.

所以我请问,有没有办法在我的图表的X轴上包含水平滚动条?我需要这样我可以在100秒块的块上查看我的图表数据.

即0 - 100,然后单击滚动条将带我到100 - 200块.

提前谢谢你们!!!!! 我也用C#编码

dig*_*All 25

以下是您需要的示例:(
尝试它,只需创建一个表单,添加一个mschart并调用以下方法)

private void FillChart()
{
    int blockSize = 100;

    // generates random data (i.e. 30 * blockSize random numbers)
    Random rand = new Random();
    var valuesArray = Enumerable.Range(0, blockSize * 30).Select(x => rand.Next(1, 10)).ToArray();

    // clear the chart
    chart1.Series.Clear();

    // fill the chart
    var series = chart1.Series.Add("My Series");
    series.ChartType = SeriesChartType.Line;
    series.XValueType = ChartValueType.Int32;
    for (int i = 0; i < valuesArray.Length; i++)
        series.Points.AddXY(i, valuesArray[i]);
    var chartArea = chart1.ChartAreas[series.ChartArea];

    // set view range to [0,max]
    chartArea.AxisX.Minimum = 0;
    chartArea.AxisX.Maximum = valuesArray.Length;

    // enable autoscroll
    chartArea.CursorX.AutoScroll = true;

    // let's zoom to [0,blockSize] (e.g. [0,100])
    chartArea.AxisX.ScaleView.Zoomable = true;
    chartArea.AxisX.ScaleView.SizeType = DateTimeIntervalType.Number;
    int position = 0;
    int size = blockSize;
    chartArea.AxisX.ScaleView.Zoom(position, size);

    // disable zoom-reset button (only scrollbar's arrows are available)
    chartArea.AxisX.ScrollBar.ButtonStyle = ScrollBarButtonStyles.SmallScroll;

    // set scrollbar small change to blockSize (e.g. 100)
    chartArea.AxisX.ScaleView.SmallScrollSize = blockSize;
}
Run Code Online (Sandbox Code Playgroud)

快照:

mschart缩放