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

}

Unplanned
Last Updated: 29 Mar 2016 11:00 by ADMIN
To reproduce:
-  Show the legend and the add remove series at runtime.
- The legend items must not have text.
 
Unplanned
Last Updated: 29 Mar 2016 10:59 by ADMIN
To reproduce:
- Add three line series and only set their point size.
- At runtime remove the second series.
- The points color is not updated corectly.

Workaround
- Set colors in code like this:
lineSerie1.BorderColor = Color.Red;
lineSerie1.BackColor = Color.Red;

lineSerie2.BackColor = Color.Green;
lineSerie2.BorderColor = Color.Green;

lineSerie3.BackColor = Color.Blue;
lineSerie3.BorderColor = Color.Blue;



Unplanned
Last Updated: 29 Mar 2016 10:59 by ADMIN
To reproduce: 
1. Add RadChartView with drill down and two RadCheckBox on the form
2. Subscribe to the ToggleStateChanged event of RadCheckBox and set the IsVisible property to true/false 
3. In handler of DrillDown event set the series`s IsVisible property to be equal to checkbox`s Checked property
4. In few cases the series are not visible when changing the IsVisible property and view. 

Unfortunately due to the nature of the issue we cannot provide a workaround for it. 
Unplanned
Last Updated: 29 Mar 2016 10:59 by ADMIN
To reproduce:
- Subscribe to the SelectedPointChanged event and show a dialog in it.
- Start the chart and zoom in. Select a point, close the dialog and select a point again.

Workaround:
class MyChartSelectionController : ChartSelectionController
{
    protected override ActionResult OnMouseDown(MouseEventArgs e)
    {
        //return base.OnMouseDown(e);
        return Controller.Empty;
    }
    protected override ActionResult OnMouseUp(MouseEventArgs e)
    {
        if (!this.AllowSelect || this.SelectionMode == ChartSelectionMode.None)
        {
            return base.OnMouseUp(e);
        }

        DataPoint oldDataPoint = SelectedPoint;
        DataPoint newDataPoint = null;
        ChartSeries oldSeries = SelectedSeries;
        ChartSeries newSeries = null;
        DataPoint point = null;

        foreach (ChartSeries series in this.Area.Series)
        {
            point = series.HitTest(e.X, e.Y);
            if (point != null)
            {
                newDataPoint = point;
                newSeries = series;
                break;
            }
        }

        if (point == null)
        {
            return base.OnMouseUp(e);
        }

        ChartViewSelectedPointChangingEventArgs cancelArgs = new ChartViewSelectedPointChangingEventArgs(oldDataPoint, newDataPoint, oldSeries, newSeries, this.SelectionMode);
        OnSelectedPointChanging(cancelArgs);

        if (cancelArgs.Cancel == true)
        {
            return base.OnMouseUp(e);
        }

        if (oldDataPoint == newDataPoint)
        {
            oldDataPoint.IsSelected = !oldDataPoint.IsSelected;
            newDataPoint = null;
            SelectedPoint = null;
        }
        else
        {
            if (this.SelectionMode == ChartSelectionMode.SingleDataPoint && oldDataPoint != null)
            {
                oldDataPoint.IsSelected = false;
            }

            this.SelectedPoint = newDataPoint;
            this.SelectedPoint.IsSelected = !SelectedPoint.IsSelected;
        }

        ChartViewSelectedPointChangedEventArgs changedArgs = new ChartViewSelectedPointChangedEventArgs(oldDataPoint, newDataPoint, oldSeries, newSeries, this.SelectionMode);
        OnSelectedPointChanged(changedArgs);
    
        return base.OnMouseUp(e);
    }

   
}


Unplanned
Last Updated: 29 Mar 2016 10:58 by ADMIN
To reproduce:
- Add a pie chart using the property builder and set the palette as well.

Workaround
- Set the palette in code:
 this.radChartView1.Area.View.Palette = KnownPalette.Metro;
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;
            }
Unplanned
Last Updated: 29 Mar 2016 10:58 by ADMIN
To reproduce:
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"));

for (int i = 0; i < 50; i++)
{
    series.DataPoints.Add(new PieDataPoint(1, "Item " + i));
}

series.ShowLabels = true;
series.DrawLinesToLabels = true;
this.radChartView1.Series.Add(series);
 this.radChartView1.ShowSmartLabels = true;
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);
        }
    }
}
Declined
Last Updated: 22 Jun 2015 10:00 by ADMIN
when overlay a radlabel on a radchartview, chartview constantly refreshes
label backcolor set to transparent

tried to recreate this with a sample cs project but wouldn't reproduce!

video has two instances of the same user control on the form
notice that right hand instance does not update when radlabel is added

attached is video of it working fine, then add label ontop , then see it misbehaving  with fast refresh flicker!  not only that it also prevents other items in the user controls from updating and the other user control on the form from updating

have attached sample c# project (but cant reproduce)
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

Completed
Last Updated: 07 Jul 2015 12:22 by Ian
By making IsVisibleInLegend = false at design time, get exception during compile (see attached) and also exceptions at run time

Aim:
I need to be able to hide certain chart text from legend

 
Declined
Last Updated: 08 Jul 2015 13:29 by ADMIN
Having issues withVS2013 & 2015 Q1 Winforms RadChartView control

1. WYSIWYG in design time does not refresh properly after changing axis collection parameters, unless close and reopen the parent winform or custom control
2. by changing an axis collection parameter , seem to end up with multiple extra axes series (originally had axisX, AxisY, and after a minor param change ended up with axis 0 thru 5 (6 in total) and all series where now using axis4 & axis5 not my original axis?
3. I can't see to toggle display on/off of series in winforms via the legend, yet in wpf web it is possible? will this feature be added later?

attached is example of WYSIWYG not working

improvement Suggestions:
I would love to have a major and minor grid (similar to ref: http://thumbs.dreamstime.com/z/screen-digital-oscilloscope-two-types-signal-33269502.jpg)  as most of my work is measurement and scientific in nature. 

I would like to ensure the ratio of X-Y is fixed so that on resize of the control the grid does not skew or stretch  and I loose 1:1 aspect ratio

I look forward to your feedback ;)