0

コミュニティ、

これが私の最初の質問です。私が抱えていた他のすべての問題には、多くの場合、こちら側に答えがありました。このため、私は見つけられませんでした。ここに私の問題があります:

チャートがあり、チャート上でマウスをクリックしたポイントに垂直スタープラインを追加したいと考えています。これまでのところ、そのコードで作業しています:

chartSettlingCurve.ChartAreas[0].CursorX.SetCursorPixelPosition(new Point(e.X, e.Y), true);
double pX = chartSettlingCurve.ChartAreas[0].CursorX.Position; //X Axis coordinate Mouse
            DataPoint dataPoint = chartSettlingCurve.Series[0].Points.FindByValue(nearestPreceedingValue(nearestPreceedingValue(pX)), "X");
            labelTab3Test.Text = Convert.ToString(dataPoint);

            DataPoint maxValuePoint = chartSettlingCurve.Series[0].Points.FindMaxByValue();

            StripLine stripLineEnd = new StripLine();
            stripLineEnd.BorderColor = Color.Blue;
            stripLineEnd.IntervalOffset = dataPoint.XValue;
            stripLineEnd.Text = "End";

このコードは、グラフをクリックするたびにストリップラインを生成しますが、1行だけが必要です。したがって、まだストリップ ラインがある場合は、別の位置で新しいものに交換する必要があります。

助けていただければ幸いです。私の問題が分からない場合は、お尋ねください。

ありがとう

4

2 に答える 2

1

実用的なソリューションは次のとおりです。

            for (int j = 0; j < chartSettlingCurve.ChartAreas[0].AxisX.StripLines.Count; j++)
            {
                if (chartSettlingCurve.ChartAreas[0].AxisX.StripLines[j].Tag.ToString() == "end")
                {
                    chartSettlingCurve.ChartAreas[0].AxisX.StripLines.RemoveAt(j);
                    j--;
                }
            }

または代替として:

            bool loop = true;
            while (loop)
            {
                loop = false;
                foreach (var element in chartSettlingCurve.ChartAreas[0].AxisX.StripLines)
                {
                    if (element.Tag.ToString() == "end")
                    {
                        chartSettlingCurve.ChartAreas[0].AxisX.StripLines.Remove(element);
                        loop = true;
                        break;
                    }
                }
            }
于 2013-06-11T13:53:27.843 に答える