Can't change grid color in chart


https://www.nevron.com/Forum/Topic14456.aspx
Print Topic | Close Window

By Syrhey Karol' - Last Year
Hi
I created a simle chart, make grid visible on X axis in Red color.
Then I added a button and if I click on the button I'd like to change X Axis Grid color to Yellow. 
But it doesn't work.
Could you help me, please? 

Designer source code:
namespace WinFormsApp1
{
  partial class Form1
  {
   /// <summary>
   /// Required designer variable.
   /// </summary>
   private System.ComponentModel.IContainer components = null;

   /// <summary>
   /// Clean up any resources being used.
   /// </summary>
   /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
   protected override void Dispose(bool disposing)
   {
    if (disposing && (components != null))
    {
      components.Dispose();
    }
    base.Dispose(disposing);
   }

   #region Windows Form Designer generated code

   /// <summary>
   /// Required method for Designer support - do not modify
   /// the contents of this method with the code editor.
   /// </summary>
   private void InitializeComponent()
   {
    this.button1 = new System.Windows.Forms.Button();
    this.SuspendLayout();
    //
    // button1
    //
    this.button1.Location = new System.Drawing.Point(12, 12);
    this.button1.Name = "button1";
    this.button1.Size = new System.Drawing.Size(75, 23);
    this.button1.TabIndex = 0;
    this.button1.Text = "button1";
    this.button1.UseVisualStyleBackColor = true;
    this.button1.Click += new System.EventHandler(this.button1_Click);
    //
    // Form1
    //
    this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
    this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
    this.ClientSize = new System.Drawing.Size(800, 450);
    this.Controls.Add(this.button1);
    this.Name = "Form1";
    this.Text = "Form1";
    this.ResumeLayout(false);

   }

   #endregion
  
   private Button button1;
  }
}


CS file source code:
using Nevron.Chart;
using Nevron.GraphicsCore;
using System.Drawing;

namespace WinFormsApp1
{
  public partial class Form1 : Form
  {
   public Nevron.Chart.WinForm.NChartControl nChartControl1;
   public Form1()
   {
    InitializeComponent();

    this.nChartControl1 = new Nevron.Chart.WinForm.NChartControl();
    //
    // _nChartCtrl
    //
    this.nChartControl1.AllowDrop = true;
    this.nChartControl1.AutoRefresh = false;
    this.nChartControl1.BackColor = System.Drawing.SystemColors.Control;
    this.nChartControl1.Dock = System.Windows.Forms.DockStyle.Fill;
    this.nChartControl1.InputKeys = new System.Windows.Forms.Keys[0];
    this.nChartControl1.Location = new System.Drawing.Point(0, 0);
    this.nChartControl1.Name = "_nChartCtrl";
    this.nChartControl1.Size = new System.Drawing.Size(743, 560);
    this.nChartControl1.TabIndex = 0;
    this.Controls.Add(this.nChartControl1);


    // set a chart title
    NLabel title = nChartControl1.Labels.AddHeader("2D Line Chart");
    title.TextStyle.FontStyle = new NFontStyle("Times New Roman", 18, FontStyle.Italic);
    title.ContentAlignment = ContentAlignment.BottomCenter;
    title.Location = new NPointL(new NLength(50, NRelativeUnit.ParentPercentage), new NLength(2, NRelativeUnit.ParentPercentage));

    // no legend
    nChartControl1.Legends.Clear();

    // configure the chart
    NChart chart = nChartControl1.Charts[0];

    // X Axis
    chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator.MajorGridStyle.SetShowAtWall(ChartWallType.Back, true);
    chart.Axis(StandardAxis.PrimaryX).ScaleConfigurator.MajorGridStyle.LineStyle.Color = Color.Red;

    NLineSeries line = (NLineSeries)chart.Series.Add(SeriesType.Line);
    line.Name = "Line Series";
    line.InflateMargins = true;
    line.DataLabelStyle.Format = "<value>";
    line.MarkerStyle.Visible = true;
    line.MarkerStyle.PointShape = PointShape.Cylinder;
    line.MarkerStyle.Width = new NLength(1.5f, NRelativeUnit.ParentPercentage);
    line.MarkerStyle.Height = new NLength(1.5f, NRelativeUnit.ParentPercentage);
    line.ShadowStyle.Type = ShadowType.GaussianBlur;
    line.ShadowStyle.Offset = new NPointL(3, 3);
    line.ShadowStyle.FadeLength = new NLength(5);
    line.ShadowStyle.Color = Color.FromArgb(55, 0, 0, 0);
    line.Values.FillRandom(new Random(), 8);
   }

   private void button1_Click(object sender, EventArgs e)
   {
    nChartControl1.Charts[0].Axis(StandardAxis.PrimaryX).ScaleConfigurator.MajorGridStyle.LineStyle.Color = Color.Yellow;

    nChartControl1.Invalidate(true);
    nChartControl1.Charts[0].Refresh();
   }
  }
}
By Nevron Support - Last Year
Hi Syrthey,

It looks like there is a small issue with the scale configurator - it does not mark the scale for update so you need to force the update:

This code worked Ok:
  private void button1_Click(object sender, EventArgs e)
   {
    nChartControl1.Charts[0].Axis(StandardAxis.PrimaryX).ScaleConfigurator.MajorGridStyle.LineStyle.Color = Color.Yellow;
    nChartControl1.Charts[0].Axis(StandardAxis.PrimaryX).InvalidateScale();

    nChartControl1.Refresh();
   }

We'll be looking in detail in the problem and the fix will appear in the next major release of the control. We hope this helps - let us know if you have any questions or meet any problems.
By Syrhey Karol' - Last Year
Hi!
Thank you a lot for workaround!
It works