Completed
Last Updated: 19 Aug 2016 09:29 by ADMIN
To reproduce:

LineSeries lineSeries = new LineSeries();
lineSeries.DataPoints.Add(new CategoricalDataPoint(20, "Jan"));
lineSeries.DataPoints.Add(new CategoricalDataPoint(22, "Apr"));
lineSeries.DataPoints.Add(new CategoricalDataPoint(12, "Jul"));
lineSeries.DataPoints.Add(new CategoricalDataPoint(19, "Oct"));
lineSeries.LegendTitle = "Series A asdafsafasfd fgsdfg sdfs dfg dafsvsd";
this.radChartView1.Series.Add(lineSeries);
LineSeries lineSeries2 = new LineSeries();
lineSeries2.DataPoints.Add(new CategoricalDataPoint(18, "Jan"));
lineSeries2.DataPoints.Add(new CategoricalDataPoint(15, "Apr"));
lineSeries2.DataPoints.Add(new CategoricalDataPoint(17, "Jul"));
lineSeries2.DataPoints.Add(new CategoricalDataPoint(22, "Oct"));
lineSeries2.LegendTitle = "Series B sdf asdf adfasdfas dfadsf asdf sadf awef";
this.radChartView1.Series.Add(lineSeries2);
LineSeries lineSeries3 = new LineSeries();
lineSeries3.DataPoints.Add(new CategoricalDataPoint(13, "Jan"));
lineSeries3.DataPoints.Add(new CategoricalDataPoint(14, "Apr"));
lineSeries3.DataPoints.Add(new CategoricalDataPoint(12, "Jul"));
lineSeries3.DataPoints.Add(new CategoricalDataPoint(25, "Oct"));
lineSeries3.LegendTitle = "Series C sdf asdf adfasdfas dfadsf asdf sadf awef";
this.radChartView1.Series.Add(lineSeries3);

this.radChartView1.ShowLegend = true;
this.radChartView1.ChartElement.LegendPosition = Telerik.WinControls.UI.LegendPosition.Bottom;
radChartView1.ChartElement.LegendElement.StackElement.Orientation = Orientation.Horizontal;

Workaround: specify minimum height for the legend

radChartView1.ChartElement.LegendElement.MinSize = new Size(0, 50);
Completed
Last Updated: 20 May 2016 10:54 by ADMIN
To reproduce:
- Localize the palette names with the localization provider.
- Change the palette with the context menu.

Workaround:
class MyChartDataPointElementController : ChartDataPointElementController
{
    protected override RadContextMenu CreatePaletteMenu()
    {
        RadContextMenu menu = new RadContextMenu();

        RadChartLocalizationProvider localizationProvider = RadChartLocalizationProvider.CurrentProvider;

        RadMenuItem paletteItem = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.Palette));

        menu.Items.Add(paletteItem);

        RadMenuItem item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteArctic));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Arctic";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteAutumn));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Autumn";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteCold));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Gold";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteFlower));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Flower";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteForest));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Forest";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteGrayscale));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Grayscale";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteGround));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Ground";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteLilac));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Lilac";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteMetro));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Metro";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteNatural));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Natural";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PalettePastel));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Pastel";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteRainbow));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Rainbow";
        paletteItem.Items.Add(item);


        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteSpring));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Spring";
        paletteItem.Items.Add(item);


        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteSummer));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Summer";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteWarm));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Warm";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteWindows8));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Windows8";
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteSun));
        item.Click += new System.EventHandler(item_Click);
        item.Tag = "Sun";
        paletteItem.Items.Add(item);

        return menu;
    }

    void item_Click(object sender, System.EventArgs e)
    {
        RadMenuItem item = sender as RadMenuItem;
        if (item != null)
        {
            this.Area.View.Palette = ChartPalette.FromKnownPalette(item.Tag.ToString());
        }
    }
}

// change the controller

this.radChartView1.Controllers.Add(new MyChartDataPointElementController());
Completed
Last Updated: 20 Oct 2016 10:43 by ADMIN
Completed
Last Updated: 15 Aug 2016 10:06 by ADMIN
To reproduce: 
- Add two donut series and set their RadiusFactor so both series can be seen.
- Add ChartSelectionController.
- You will be able to select points from the firs series only. 

Workaround:
class MyPieRenderer : PieRenderer
{
    public MyPieRenderer(PieArea area) : base(area)
    {
    }

    public override DataPoint HitTest(int x, int y)
    {
        if (this.DrawParts.Count > 0)
        {
            foreach (var item in this.DrawParts)
            {
                if (item is PieSeriesDrawPart)
                {
                    Dictionary<PieDataPoint, GraphicsPath> paths = ((PieSeriesDrawPart)item).PointPaths;

                    foreach (PieDataPoint point in paths.Keys)
                    {
                        GraphicsPath path = new GraphicsPath();
                        paths.TryGetValue(point, out path);

                        if (path != null)
                        {
                            if (path.IsVisible(x, y))
                            {
                                return point;
                            }
                        }
                    }
                }
            }
        }
        return null;
    }
}
private void RadChartView1_CreateRenderer(object sender, ChartViewCreateRendererEventArgs e)
{
    e.Renderer = new MyPieRenderer((PieArea)e.Area);
}
Completed
Last Updated: 12 Apr 2016 06:18 by ADMIN
Completed
Last Updated: 12 Apr 2016 06:07 by ADMIN
To reproduce: 
- Use the attached file to reproduce.

Workaround:
- Reset the chart data source:
THIS-OBJECT:radChartView1:DataSource = ?.
THIS-OBJECT:radChartView1:DataSource = THIS-OBJECT:bindingSource1.
Completed
Last Updated: 03 Jul 2019 04:10 by ADMIN
Release R3 2018
To reproduce:
- Just add StochasticSlowIndicator to a chart.
Completed
Last Updated: 10 Feb 2016 14:29 by ADMIN
To reproduce:
public RadForm1()
{
    InitializeComponent();
    this.radChartView1.AreaType = ChartAreaType.Pie;
    PieSeries series = new PieSeries();
    series.DataPoints.Add(new PieDataPoint(50, "Germany"));
    series.DataPoints.Add(new PieDataPoint(70, "United States"));
    series.DataPoints.Add(new PieDataPoint(40, "France"));
    series.DataPoints.Add(new PieDataPoint(25, "United Kingdom"));
    series.ShowLabels = true;
    this.radChartView1.Series.Add(series);

    radChartView1.ShowLegend = true;
}
Random rnd = new Random();
private void radButton1_Click(object sender, EventArgs e)
{
     this.radChartView1.Series[0].DataPoints.RemoveAt(0);
     this.radChartView1.Series[0].DataPoints.Add(new PieDataPoint(rnd.Next(100), rnd.Next(100).ToString()));
}

Workaround:

private void radButton1_Click(object sender, EventArgs e)
{
    this.radChartView1.Series[0].DataPoints.RemoveAt(0);
    this.radChartView1.Series[0].DataPoints.Add(new PieDataPoint(50, rnd.Next(100).ToString()));

    this.radChartView1.ChartElement.LegendElement.Items.Clear();

    foreach (PieSeries series in radChartView1.Series)
    {
        for (int i = 0; i < series.DataPoints.Count; i++)
        {
            var dataPoint = series.DataPoints[i] as PieDataPoint;
            var element = series.Children[i] as PiePointElement;

            var legendItem = new LegendItem(element);
            legendItem.Title = dataPoint.LegendTitle;
          
            this.radChartView1.ChartElement.LegendElement.Items.Add(legendItem);
        }
        
    }
}
Completed
Last Updated: 05 Aug 2016 12:45 by ADMIN
To reproduce:
- Add DateTimeContinuousAxis to a chart and set its MajorStep property.

Workaround:
Create the DateTimeContinuousAxis in the code behind.
Completed
Last Updated: 11 Jul 2016 13:18 by ADMIN
To reproduce:
- Enable the Trackball
- Use the following code:
public RadForm1()
{
    InitializeComponent();

    ScatterLineSeries sls = radChartView1.Series[0] as ScatterLineSeries;
    sls.XValueMember = "X";
    sls.YValueMember = "Y";
}

private void timer1_Tick(object sender, EventArgs e)
{
    DataTable dt = new DataTable();
    dt.Columns.Add("X", typeof(double));
    dt.Columns.Add("Y", typeof(double));

    Random ran = new Random();
    for (int i = 0; i < 100; i++)
        dt.Rows.Add(i, 1 + ran.NextDouble() / 10);

    radChartView1.Series[0].DataSource = dt;
}

Workaround:
class MyChartTrackballController : ChartTrackballController
{
    protected override string GetPointText(DataPoint point)
    {
        ChartSeries series = point.Presenter as ChartSeries;
        if (series == null)
        {
            return string.Empty;
        }
        return base.GetPointText(point);
    }
}
Completed
Last Updated: 03 Jan 2017 12:58 by ADMIN
To reproduce:
- Set the palette from the default context menu.
- Try to get the palette name.

Workaround:
class MyChartDataPointElementController : ChartDataPointElementController
{
    protected override RadContextMenu CreatePaletteMenu()
    {
        //return base.CreatePaletteMenu();
        RadContextMenu menu = new RadContextMenu();

        RadChartLocalizationProvider localizationProvider = RadChartLocalizationProvider.CurrentProvider;

        RadMenuItem paletteItem = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.Palette));
        menu.Items.Add(paletteItem);

        RadMenuItem item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteArctic));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteAutumn));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteCold));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteFlower));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteForest));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteGrayscale));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteGround));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteLilac));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteMetro));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteNatural));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PalettePastel));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteRainbow));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);


        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteSpring));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);


        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteSummer));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteWarm));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteWindows8));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        item = new RadMenuItem(localizationProvider.GetLocalizedString(RadChartStringId.PaletteSun));
        item.Click += new System.EventHandler(item_Click);
        paletteItem.Items.Add(item);

        return menu;
    }

    void item_Click(object sender, System.EventArgs e)
    {
        RadMenuItem item = sender as RadMenuItem;
        if (item != null)
        {
            this.Area.View.Palette = ChartPalette.FromKnownPalette(item.Text);
            this.Area.View.Palette.Name = item.Text;
        }
    }
}

Change the controller like this:
 radChartView1.Controllers.Add(new MyChartDataPointElementController());
Completed
Last Updated: 06 Mar 2017 08:35 by ADMIN
To reproduce:
public RadForm1()
{
    InitializeComponent();
    date = DateTime.Now;
}
int dayCounter;
Random rnd = new Random();
DateTime date;


Timer timer = new Timer();
protected override void OnLoad(EventArgs e)
{
    base.OnLoad(e);
    LineSeries lineSeria = new LineSeries();
    DateTimeContinuousAxis continuousAxis = new DateTimeContinuousAxis();          
    continuousAxis.LabelFormat = "{0:dd}";
    lineSeria.HorizontalAxis = continuousAxis;
    radChartView1.Series.Add(lineSeria);

    for (int i = 0; i < 500; i++)
    {
        radChartView1.Series[0].DataPoints.Add(new CategoricalDataPoint(rnd.Next(1000), date.AddDays(dayCounter++)));
    }

    timer.Tick += timer_Tick;
    timer.Interval = 200;
    timer.Start();
}

void timer_Tick(object sender, EventArgs e)
{
    foreach (CategoricalDataPoint point in radChartView1.Series[0].DataPoints)
    {
       // point.Value = rnd.Next(1000);
        point.Category = date.AddDays(dayCounter++);
    }
}

Workaround:
void timer_Tick(object sender, EventArgs e)
{
    DateTimeContinuousAxis continuousAxis = ((LineSeries)radChartView1.Series[0]).HorizontalAxis as DateTimeContinuousAxis;

    HybridDictionary hashSet = typeof(Axis).GetField("hashSet", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(continuousAxis) as HybridDictionary;
    hashSet.Clear();

}

Completed
Last Updated: 30 Jan 2017 10:57 by ADMIN
To reproduce:

radChartView1.AreaType = ChartAreaType.Pie;
 
PieSeries series = new PieSeries();
 
series.DataPoints.Add(new PieDataPoint(50, "Germany"));
series.Children.LastOrDefault().BackColor = Color.Red;
series.Children.LastOrDefault().BorderColor = Color.Green;
 
series.DataPoints.Add(new PieDataPoint(70, "United States"));
series.Children.LastOrDefault().BackColor = Color.Green;
series.Children.LastOrDefault().BorderColor = Color.Red;
 
series.DataPoints.Add(new PieDataPoint(40, "France"));
series.Children.LastOrDefault().BackColor = Color.Blue;
series.Children.LastOrDefault().BorderColor = Color.Yellow;
 
series.DataPoints.Add(new PieDataPoint(25, "United Kingdom"));
series.Children.LastOrDefault().BackColor = Color.Yellow;
series.Children.LastOrDefault().BorderColor = Color.Blue;
 
this.radChartView1.Series.Add(series);
radChartView1.ShowLegend = true;

Workaround:
            for (int i = 0; i < radChartView1.ChartElement.LegendElement.Items.Count; i++)
            {
                PieDataPoint point = ((PieDataPoint)series.DataPoints[i]);
                radChartView1.ChartElement.LegendElement.Items[i].Element.BackColor = Color.Red;
                radChartView1.ChartElement.LegendElement.Items[i].Element.BorderColor = Color.Yellow;
            }
Completed
Last Updated: 10 Jul 2015 13:01 by ADMIN
How to reproduce: 
public Form1()
        {
            InitializeComponent();

            DataTable source = new DataTable();
            source.Columns.Add("PreviousGoal", typeof(decimal));
            source.Columns.Add("CurrentCategory", typeof(System.DateTime));

            source.LoadDataRow(new object[] { null, "6/1/15" }, true);
            source.LoadDataRow(new object[] { null, "6/2/15" }, true);
            source.LoadDataRow(new object[] { null, "6/3/15" }, true);
            source.LoadDataRow(new object[] { null, "6/4/15" }, true);
            source.LoadDataRow(new object[] { null, "6/5/15" }, true);

            this.radChartView1.DataSource = source;

            SteplineSeries previousGoalSeries = new SteplineSeries();
            previousGoalSeries.DataSource = source;
            previousGoalSeries.ValueMember = "PreviousGoal";
            this.radChartView1.Series.Add(previousGoalSeries);

            SteplineSeries previousGoalSeries1 = new SteplineSeries();
            previousGoalSeries1.DataSource = source;
            previousGoalSeries1.ValueMember = "CurrentCategory";
            this.radChartView1.Series.Add(previousGoalSeries1);

            this.radChartView1.ShowTrackBall = true;

        }

Workaround: add the series with null values last
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        DataTable source = new DataTable();
        source.Columns.Add("PreviousGoal", typeof(decimal));
        source.Columns.Add("CurrentCategory", typeof(System.DateTime));

        source.LoadDataRow(new object[] { null, "6/1/15" }, true);
        source.LoadDataRow(new object[] { null, "6/2/15" }, true);
        source.LoadDataRow(new object[] { null, "6/3/15" }, true);
        source.LoadDataRow(new object[] { null, "6/4/15" }, true);
        source.LoadDataRow(new object[] { null, "6/5/15" }, true);

        this.radChartView1.DataSource = source;
        SteplineSeries previousGoalSeries1 = new SteplineSeries();
        previousGoalSeries1.DataSource = source;
        previousGoalSeries1.ValueMember = "CurrentCategory";
        this.radChartView1.Series.Add(previousGoalSeries1);

        SteplineSeries previousGoalSeries = new SteplineSeries();
        previousGoalSeries.DataSource = source;
        previousGoalSeries.ValueMember = "PreviousGoal";
        this.radChartView1.Series.Add(previousGoalSeries);

        this.radChartView1.ShowTrackBall = true;
    }
}
Completed
Last Updated: 14 Jul 2015 09:59 by ADMIN
Completed
Last Updated: 07 Jul 2015 12:30 by ADMIN
How to reproduce: 
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();

        this.radChartView1.AreaType = ChartAreaType.Pie;
        PieSeries series = new PieSeries();
        series.DataPoints.Add(new PieDataPoint(0, "Germany"));
        series.DataPoints.Add(new PieDataPoint(0, "United States"));
        series.DataPoints.Add(new PieDataPoint(0, "France"));
        series.DataPoints.Add(new PieDataPoint(0, "United Kingdom"));
        series.ShowLabels = true;
        this.radChartView1.Series.Add(series);
        this.radChartView1.ShowSmartLabels = true;
    }
}

Workaround: 
this.radChartView1.ShowSmartLabels = false;
Completed
Last Updated: 23 Jul 2015 12:59 by ADMIN
Workaround: create a custom BarSeriesDrawPart  and override the Draw method

public class CustomBarSeriesDrawPart : BarSeriesDrawPart
{
    public CustomBarSeriesDrawPart(BarSeries series, IChartRenderer renderer)
        : base(series, renderer)
    { }

    public override void Draw()
    {
        bool shouldDraw = IsElementValid();
        if (shouldDraw)
        {
            Graphics graphics = this.Renderer.Surface as Graphics;
            GraphicsState state = graphics.Save();
            Region clipRegion = graphics.Clip;

            CartesianSeries cartesianSeries = this.Element as CartesianSeries;
           

            if (cartesianSeries != null)
            {
                FieldInfo fi = cartesianSeries.GetType().GetField("area", BindingFlags.NonPublic | BindingFlags.Instance);
                CartesianArea  area = fi.GetValue(cartesianSeries) as CartesianArea;
                MethodInfo mi = area.GetType().GetMethod("GetCartesianClipRect", BindingFlags.NonPublic | BindingFlags.Instance);
                mi.Invoke(area, null);

                RectangleF clipRect = (RectangleF)mi.Invoke(area, null); 
                graphics.Clip = new Region(clipRect);
            }

            DrawSeriesParts();

            graphics.Clip = clipRegion;
            graphics.Restore(state);
        }
    }
}
Completed
Last Updated: 22 Jul 2015 06:43 by ADMIN
RadChartView Control: corrupts legend when set Series IsVisibleInLegend = False in Properties at design time

Simply added a few extra series , and then tried to turn them off in the legend 

screen shot shows too many legent items for the series in the properties window