Please help me how to display ChartView scroll bar(UI Wnforms)

4 posts, 0 answers
  1. HEE KYUNG
    HEE KYUNG avatar
    2 posts
    Member since:
    Jan 2014

    Posted 25 Mar 2014 Link to this post

    Hello.!

    I am a user who uses your Telerik library.
    Currently, I have been programming CharView on Winfom.
    In case of the program that I develop, Whenever I click a button, it draws a chart then BindingList’s data is increasing continuously.
    What I want to do is that let the Scroll bar be displayed when the number of data is over 20.
    However, my program does not display Scroll bar when that happens.
    My code is the following.

    public partial class Form1 : Form
        {
            private BindingList<SampleData> _collectiontempsite1;
     
            public Form1()
            {
                InitializeComponent();
            }
     
            private void Form1_Load(object sender, EventArgs e)
            {
                _collectiontempsite1 = new BindingList<SampleData>();           
     
                radChartView1.ShowTitle = true;
                radChartView1.Title = "Sample";
     
                ClearChart();
                DrawChart();
            }
     
            private void ClearChart()
            {
                radChartView1.Series.Clear();
                radChartView1.Axes.Clear();
            }
     
            private void DrawChart()
            {
                CategoricalAxis horizontalAxis = new CategoricalAxis();
                horizontalAxis.PlotMode = AxisPlotMode.OnTicksPadded;
                //      horizontalAxis.LabelFitMode = AxisLabelFitMode.Rotate;
                //      horizontalAxis.LabelRotationAngle = 270;
                horizontalAxis.LabelInterval = 10;          
     
                LinearAxis verticalAxis = new LinearAxis();
                verticalAxis.AxisType = AxisType.Second;          
                verticalAxis.LabelInterval = 2;          
     
                CartesianSeries series1 = null;
                series1 = new LineSeries();
                series1.LegendTitle = "site1";
                series1.PointSize = new SizeF(5, 5);
                series1.HorizontalAxis = horizontalAxis;
                series1.VerticalAxis = verticalAxis;
                series1.BorderWidth = 2;
                series1.CategoryMember = "Time";
                series1.ValueMember = "Temp";
                series1.DataSource = _collectiontempsite1;           
                //series1.ShowLabels = true;
                series1.CombineMode = ChartSeriesCombineMode.None;
     
                radChartView1.Series.Add(series1);
                radChartView1.Area.View.Palette = KnownPalette.Summer;
     
                radChartView1.VerticalScroll.Enabled = true;
                radChartView1.VerticalScroll.Visible = true;
                radChartView1.HorizontalScroll.Enabled = true;
                radChartView1.HorizontalScroll.Visible = true;     
            }
     
            private void button1_Click(object sender, EventArgs e)
            {
                Random r = new Random(DateTime.Now.Millisecond);
     
                string strCurrentTime = DateTime.Now.ToString("hh:mm:ss:ffff");
                double dTemp = Convert.ToDouble(r.Next(70, 120));
                _collectiontempsite1.Add(new SampleData(strCurrentTime, dTemp));
            }
        }



    Please respond to what I concern. Thank you.
  2. Dimitar
    Admin
    Dimitar avatar
    1415 posts

    Posted 25 Mar 2014 Link to this post

    Hi Hee,

    Thank you for writing.

    You can use the built in Scroll and Zoom functionality in order to achieve the desired effect. For example you can zoom and then scroll the chart when a new data point is added. This currently is not supported directly, but can be done by using reflection:
    private void button1_Click(object sender, EventArgs e)
    {
        Random r = new Random(DateTime.Now.Millisecond);
     
        string strCurrentTime = DateTime.Now.ToString("hh:mm:ss:ffff");
        double dTemp = Convert.ToDouble(r.Next(700, 1200));
        _collectiontempsite1.Add(new SampleData(strCurrentTime, dTemp));
     
         
     
        if (_collectiontempsite1.Count > 10)
        {
            IChartView view = this.radChartView1.View;
     
            radChartView1.Zoom((double)_collectiontempsite1.Count / 10d, 1);        
     
            MethodInfo method = typeof(ChartPanZoomController).GetMethod("OnPanGesture", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
            ConstructorInfo ci = typeof(PanGestureEventArgs).GetConstructor(BindingFlags.Instance | BindingFlags.NonPublic, null, new Type[] { typeof(Size), typeof(Size), typeof(GESTUREINFO), typeof(RadControl) }, null);
            PanGestureEventArgs args = ci.Invoke(new object[] { new Size(int.MinValue, 0), new Size(1, 0), default(GESTUREINFO), this.radChartView1 }) as PanGestureEventArgs;
            method.Invoke(panZoomController, new object[] { args });
        }          
    }

    Please note that there is no way to show a scrollbar, however the user can scroll with the mouse (Left Mouse Button Down+Move).

    Please let me know if there is something else I can help you with. 

    Regards,
    Dimitar
    Telerik
     

    Build cross-platform mobile apps using Visual Studio and .NET. Register for the online webinar on 03/27/2014, 11:00AM US ET.. Seats are limited.

     
  3. UI for WinForms is Visual Studio 2017 Ready
  4. HEE KYUNG
    HEE KYUNG avatar
    2 posts
    Member since:
    Jan 2014

    Posted 25 Mar 2014 in reply to Dimitar Link to this post

    Hello, 
     I really appreciate it for your help.


  5. Dimitar
    Admin
    Dimitar avatar
    1415 posts

    Posted 26 Mar 2014 Link to this post

    Hello Hee,

    Thank you for writing back.

    I am glad I could be of help. Let us know if you have any other questions.

    Regards,
    Dimitar
    Telerik
     

    Build cross-platform mobile apps using Visual Studio and .NET. Register for the online webinar on 03/27/2014, 11:00AM US ET.. Seats are limited.

     
Back to Top