c# - 为什么 x 滚动条卡在 mschart 上?

标签 c# mschart

            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();


            //chart1.ChartAreas[0].AxisX.Interval = 3.0;
            //chart1.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Auto;
            DateTime now = DateTime.Now;
            chart1.ChartAreas[0].AxisX.LabelStyle.Format = "HH:mm:ss";
            chart1.ChartAreas[0].AxisX.Minimum = now.ToOADate();
            // fill the chart
            var series = chart1.Series.Add("My Series");
            series.XValueType = ChartValueType.DateTime;
            series.ChartType = SeriesChartType.Line;
            //series.XValueType = ChartValueType.Int32;
            //DateTime.Now.AddSeconds(i).ToOADate()
            for (int i = 0; i < valuesArray.Length; i++)
                series.Points.AddXY(now.AddSeconds(i).ToOADate(), valuesArray[i]);
            var chartArea = chart1.ChartAreas[series.ChartArea];

            // set view range to [0,max]
            //chartArea.AxisX.Minimum = 0;
            //chartArea.AxisX.IntervalType = DateTimeIntervalType.Seconds;
            //chartArea.AxisX.Interval = 10d;
               // chartArea.AxisX.Maximum = 100;

            // 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.Auto;
            int position = 0;
            int size = blockSize;
            chartArea.AxisX.ScaleView.Zoom(now.AddSeconds(-5).ToOADate(), now.AddSeconds(20).ToOADate());
            //chart1.ChartAreas[0].AxisX.ScaleView.ZoomReset();
            // 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 = (new TimeSpan(0,0,10)).TotalSeconds;

使用上面的代码我无法拖动滚动条。单击滚动条时我就卡住了。我可以使用箭头滚动。

enter image description here

最佳答案

        chartArea.AxisX.ScaleView.SmallScrollMinSize = .01;
        chartArea.AxisX.ScaleView.SmallScrollMinSizeType = DateTimeIntervalType.Seconds;
        chartArea.AxisX.ScaleView.SmallScrollSizeType = DateTimeIntervalType.Seconds;

您需要指定最小滚动尺寸才能使其正常工作。

关于c# - 为什么 x 滚动条卡在 mschart 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17130497/

相关文章:

c# - 在 MVC 中使用下拉菜单时出现错误?

C# BinaryWriter - 和字节顺序

c# - 创建辅助 x 轴

c# - 如何使用 MS 图表控件将 y 轴值增加 15 分钟

c# - 如何确定 Outlook 文件夹是否公开?

c# - 在 C# 中按下按钮时进行表单验证的最简单方法?

c# - 使用 watin 自动点击使用 Javascript 构建链接

c# - asp.net 图表控件中带有日期时间 x 轴的数据点

c# - MSChart X 轴从 -1 而不是 0 开始

vb.net - 空点无法正确显示