получена ошибка. Обрабатывается исключение нулевой ссылки. - PullRequest
0 голосов
/ 21 июля 2011

Я пытаюсь показать отчетную диаграмму, щелкнув одну диаграмму, используя следующий код

, но при этом выдается ошибка

ОШИБКА: исключение нулевой ссылки было обработано Ссылка на объект не установленак экземпляру объекта.в этой строке targetcontrol.ChartAreas.Clear ();

и это событие щелчка для управления диаграммой

 using System.Windows.Forms.DataVisualization.Charting;


private void kpiChartControl_Click(object sender, EventArgs e)
{
  Chart targetcontrol = null;
  Series series = null;
  Title title;
  string are;

  targetcontrol.ChartAreas.Clear();
  targetcontrol.Series.Clear();
  targetcontrol.Titles.Clear();

  DataTable accepts = null;
  accepts = KPIData.AcceptedvisitsByMembership(mf ,"accepted");

 are = " acceptedvisitsmshiptypes";
  targetcontrol.ChartAreas.Add(are);
  series = targetcontrol.Series.Add(are);
  series.ChartArea = are;

  title = targetcontrol.Titles.Add("Accepted Visits By MemberShip Type");
  title.DockedToChartArea = are;
  title.Font = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold);
  title.Alignment = ContentAlignment.TopLeft;

  foreach (Title titles in targetcontrol.Titles)
  {
    titles.IsDockedInsideChartArea = false;
  }


  foreach (Series serie in targetcontrol.Series)
  {


    serie.ChartType = SeriesChartType.Pie;

    serie["PieLabelStyle"] = "Outside";
    serie["DoughnutRadius"] = "30";
    serie["PieDrawingStyle"] = "SoftEdge";

    serie.BackGradientStyle = GradientStyle.DiagonalLeft;


  }
  foreach (Legend legend in targetcontrol.Legends)
  {
    legend.Enabled = false;
  }

  foreach (ChartArea chartArea in targetcontrol.ChartAreas)
  {
    chartArea.Area3DStyle.Enable3D = true;
    chartArea.Area3DStyle.Inclination = 45;
    //chartArea.AxisX.LabelStyle.IsEndLabelVisible = !overview;
  }

  targetcontrol.Series[0].Points.DataBindXY(accepts.Rows, "mshiptypenumbers", accepts.Rows, "mshipType_Name");
  foreach (Series chartSeries in targetcontrol.Series)
  {
    foreach (DataPoint point in chartSeries.Points)
    {

      switch (point.AxisLabel)
      {
        case "Silver membership": point.Color = Color.Green; break;
        //case "Refused": point.Color = Color.Red; break;

      }
      point.Label = string.Format("{0:0}", point.YValues[0]);
    }

  }
}

Ответы [ 2 ]

2 голосов
/ 21 июля 2011

Вы устанавливаете переменную

Chart targetcontrol = null;

затем пытается использовать

targetcontrol.ChartAreas.Clear();

targetcontrol имеет значение null и не имеет свойства ChartAreas. Попробуйте поменять третью строку

Chart targetcontrol = null;

до

Chart targetcontrol = new Chart();
1 голос
/ 21 июля 2011

Конечно, вы получаете эту ошибку, вы объявляете

Chart targetcontrol = null; 

Тогда вы пытаетесь использовать его, не создавая его экземпляра для чего-либо.

...