使用C#找活的区域部分 [英] find the region part of live using c#

查看:132
本文介绍了使用C#找活的区域部分的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经做了这样的创建单击事件处理程序图的一个组成部分使用MSChart控件,该图是这样的

和code这样

 私人无效targetChartmouse_Click(对象发件人,发送MouseEventArgs E)
{
  尝试
  {
    VAR POS = e.Location;
    VAR的结果= kpiChartControl.HitTest(pos.X,pos.Y,假的,ChartElementType.DataPoint);
    的foreach(VAR导致的结果)
    {
      如果(result.ChartElementType == ChartElementType.DataPoint)
      {
        //做一点事....
      }
    }
  }
}
 

它的正常工作,当我们在图表上单击(图中的每个部分),但我想要做的事,只有当我们点击直播(绿色),而不是在每一个部分。是否有可能找到活(绿色)的区域

是否有可能使用C#?

我做的WinForms应用程序

修改code

 公共无效targetChartmouse_Click(对象发件人,发送MouseEventArgs E)
   {
  系列statusseries =新系列();
  系列liveseries = NULL;
  标题称号;
  弦面积;

  //系列totalserries;
  尝试
  {
    VAR POS = e.Location;
    VAR的结果= kpiChartControl.HitTest(pos.X,pos.Y,假的,ChartElementType.DataPoint);
    的foreach(VAR导致的结果)
    {
      如果(result.ChartElementType == ChartElementType.DataPoint)
      {

          数据表接受= NULL;
          接受= KPIData.livemembersmembershiptype(MF);

          数据表membershiptypes = NULL;
          membershiptypes = KPIData.MembershipTotals(dtStartDate.Value,dtEndDate.Value,MF);

          面积=变速率;
          kpiChartControl.ChartAreas.Add(区);
          statusseries = kpiChartControl.Series.Add(区);
          statusseries.ChartArea =区域;

          标题= kpiChartControl.Titles.Add(实时状态成员的会员类别);
          title.DockedToChartArea =区域;
          title.Font =新的字体(FontFamily.GenericSansSerif,10,FontStyle.Bold);
          title.Alignment = ContentAlignment.TopLeft;
          kpiChartControl.Titles.Add()DockedToChartArea =面积。
          kpiChartControl.Titles.Add(实时状态会员类型)DockedToChartArea =区域。


          面积=;
          kpiChartControl.Titles.Add()DockedToChartArea =面积。




          的foreach(在kpiChartControl.Titles标题标题)
          {
            titles.IsDockedInsideChartArea = FALSE;
          }


          的foreach(ChartArea chartArea在kpiChartControl.ChartAreas)
          {
            chartArea.Area3DStyle.Enable3D = TRUE;
            chartArea.AxisX.LabelStyle.IsEndLabelVisible =真;
            !//chartArea.AxisX.LabelStyle.IsEndLabelVisible =概况;
          }

          如果(区==变速率)
          {
            的foreach(系列ChartSeries中的kpiChartControl.Series)
            {
              chartSeries.ChartType = SeriesChartType.StackedColumn;
              ChartSeries中[ColumnDrawingStyle] =SoftEdge;
              ChartSeries中[LabelStyle] =顶;
              chartSeries.IsValueShownAsLabel = TRUE;
              chartSeries.BackGradientStyle = GradientStyle.DiagonalLeft;
            }
          }
          否则,如果(区==变速率)
          {
            的foreach(系列ChartSeries中的kpiChartControl.Series)
            {
              chartSeries.ChartType = SeriesChartType.Pie;

              // ChartSeries中[PieLabelStyle] =外;
              ChartSeries中[PieLabelStyle] =内幕;
              ChartSeries中[DoughnutRadius] =30;
              ChartSeries中[PieDrawingStyle] =SoftEdge;

              chartSeries.BackGradientStyle = GradientStyle.DiagonalLeft;

            }

          }

          的foreach(传说传说kpiChartControl.Legends)
          {
            legend.Enabled = FALSE;
          }

          如果(membershiptypes == NULL)
          {
            statusseries.Points.Clear();
            statusseries.Points.AddXY(无状态,0);

          }
          如果(接受== NULL)
          {
            liveseries.Points.Clear();
            liveseries.Points.AddXY(无活,0);

          }
          。kpiChartControl.Series [变速率] Points.DataBindXY(accepts.Rows,mshipname,accepts.Rows,伯爵);
          kpiChartControl.Series [0] .Points.DataBindXY(membershiptypes.Rows,状态,membershiptypes.Rows,价值);

        }

        的foreach(系列ChartSeries中的kpiChartControl.Series)
        {
          的foreach(在chartSeries.Points数据点处)
          {

            开关(point.AxisLabel)
            {
              案银会员:point.Color = Color.Green;打破;
              案金卡会员:point.Color = Color.Blue;打破;
              //情况下,拒绝:point.Color = Color.Red;打破;
              案周末高峰:point.Color = Color.Cyan;打破;
              案prspect:point.Color = Color.Indigo;打破;

            }
            point.Label =的String.Format({0:0},point.YValues​​ [0]);
          }

        }

        的foreach(系列ChartSeries中的kpiChartControl.Series)
        {
          的foreach(在chartSeries.Points数据点处)
          {
            开关(point.AxisLabel)
            {
              案新:point.Color = Color.Cyan;打破;
              案现场:point.Color = Color.Green;打破;
              案违纪:point.Color = Color.Red;打破;
              案已取消:point.Color = Color.Orange;打破;
              案已完成:point.Color = Color.Blue;打破;
              案冻结:point.Color = Color.Violet;打破;
            }

            point.Label =的String.Format({0:0}  -  {1},point.YValues​​ [0],point.AxisLabel);
          }
        }

    }
  }
  抓住
  {
  }

}
 

解决方案

这可能工作:

 尝试
{
  VAR POS = e.Location;
  VAR的结果= kpiChartControl.HitTest(pos.X,pos.Y,假的,ChartElementType.DataPoint);
  的foreach(VAR导致的结果)
  {
    如果(result.ChartElementType == ChartElementType.DataPoint)
    {
      如果(result.Series.Points [result.PointIndex] .AxisLabel ==活)
      {
        Console.WriteLine(成功了吗?);
      }
    }
  }
}
 

I have done like this for creating click event handler for one part of the chart using mschart control, the chart is like this

and the code like this

private void targetChartmouse_Click(object sender, MouseEventArgs e)
{ 
  try
  {
    var pos = e.Location;
    var results = kpiChartControl.HitTest(pos.X, pos.Y, false, ChartElementType.DataPoint);
    foreach (var result in results)
    {
      if (result.ChartElementType == ChartElementType.DataPoint)
      { 
        //do something....
      }
    }        
  }
}

It's working fine when we click on the chart (in every section of chart), but I want to do something only when we click on the live(green), not on every part. Is it possible to find the region of live(green)

Is it possible using c#?

I am doing winforms application

Modified Code

     public void targetChartmouse_Click(object sender, MouseEventArgs e)
   {
  Series statusseries = new Series();
  Series liveseries = null;
  Title title;
  string area;

  //Series totalserries;
  try
  {
    var pos = e.Location;
    var results = kpiChartControl.HitTest(pos.X, pos.Y, false, ChartElementType.DataPoint);
    foreach (var result in results)
    {
      if (result.ChartElementType == ChartElementType.DataPoint)
      {

          DataTable accepts = null;
          accepts = KPIData.livemembersmembershiptype(mf);

          DataTable membershiptypes = null;
          membershiptypes = KPIData.MembershipTotals(dtStartDate.Value, dtEndDate.Value, mf);

          area = "subchart";
          kpiChartControl.ChartAreas.Add(area);
          statusseries = kpiChartControl.Series.Add(area);
          statusseries.ChartArea = area;

          title = kpiChartControl.Titles.Add("Live Status  members  By MemberShip Type");
          title.DockedToChartArea = area;
          title.Font = new Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold);
          title.Alignment = ContentAlignment.TopLeft;
          kpiChartControl.Titles.Add("").DockedToChartArea = area;
          kpiChartControl.Titles.Add("Live status membership types").DockedToChartArea = area;


          area = "";
          kpiChartControl.Titles.Add("").DockedToChartArea = area;




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


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

          if (area == "subchart")
          {
            foreach (Series chartSeries in kpiChartControl.Series)
            {
              chartSeries.ChartType = SeriesChartType.StackedColumn;
              chartSeries["ColumnDrawingStyle"] = "SoftEdge";
              chartSeries["LabelStyle"] = "Top";
              chartSeries.IsValueShownAsLabel = true;
              chartSeries.BackGradientStyle = GradientStyle.DiagonalLeft;
            }
          }
          else if (area == "subchart")
          {
            foreach (Series chartSeries in kpiChartControl.Series)
            {
              chartSeries.ChartType = SeriesChartType.Pie;

              //chartSeries["PieLabelStyle"] = "Outside";
              chartSeries["PieLabelStyle"] = "Inside";
              chartSeries["DoughnutRadius"] = "30";
              chartSeries["PieDrawingStyle"] = "SoftEdge";

              chartSeries.BackGradientStyle = GradientStyle.DiagonalLeft;

            }

          }

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

          if (membershiptypes == null)
          {
            statusseries.Points.Clear();
            statusseries.Points.AddXY("no status", 0);

          }
          if (accepts == null)
          {
            liveseries.Points.Clear();
            liveseries.Points.AddXY("no live", 0);

          }
          kpiChartControl.Series["subchart"].Points.DataBindXY(accepts.Rows, "mshipname", accepts.Rows, "count");
          kpiChartControl.Series[0].Points.DataBindXY(membershiptypes.Rows, "Status", membershiptypes.Rows, "Value");

        }

        foreach (Series chartSeries in kpiChartControl.Series)
        {
          foreach (DataPoint point in chartSeries.Points)
          {

            switch (point.AxisLabel)
            {
              case "Silver membership": point.Color = Color.Green; break;
              case "Gold Membership": point.Color = Color.Blue; break;
              //case "Refused": point.Color = Color.Red; break;
              case "Weekend Peak": point.Color = Color.Cyan; break;
              case "prspect": point.Color = Color.Indigo; break;

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

        }

        foreach (Series chartSeries in kpiChartControl.Series)
        {
          foreach (DataPoint point in chartSeries.Points)
          {
            switch (point.AxisLabel)
            {
              case "New": point.Color = Color.Cyan; break;
              case "Live": point.Color = Color.Green; break;
              case "Defaulter": point.Color = Color.Red; break;
              case "Cancelled": point.Color = Color.Orange; break;
              case "Completed": point.Color = Color.Blue; break;
              case "Frozen": point.Color = Color.Violet; break;
            }

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

    }
  }
  catch
  {
  }

}

解决方案

This might work:

try
{
  var pos = e.Location;
  var results = kpiChartControl.HitTest(pos.X, pos.Y, false, ChartElementType.DataPoint);
  foreach (var result in results)
  {
    if (result.ChartElementType == ChartElementType.DataPoint)
    {
      if (result.Series.Points[result.PointIndex].AxisLabel == "Live")
      {
        Console.WriteLine("success?");
      }
    }
  }  
}

这篇关于使用C#找活的区域部分的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆