タイトル : Re^5: Chart point の更新方法 投稿日 : 2020/12/07(Mon) 10:30 投稿者 : 魔界の仮面弁士
> ここで Series(0).Points(1)のX値を 10に 変更! そもそも最初の質問のこれ、変更しているのは Y 値ですよね。 > 案1:方法解らず? .Points(1) = New DataPoint(x, y) という書き方ですね。 そもそも Me.Chart1.Series(0).Points.AddXY(1.0, 2.0) という処理は、 Me.Chart1.Series(0).Points.Add(New DataPoint(1.0, 2.0)) もしくは Me.Chart1.Series(0).Points.Add(New DataPoint() With {.XValue = 1.0, .YValues = {2.0}}) と同義です。 実際、For や For Each で Points コレクションを列挙すると、 個々の座標要素は DataPoint クラスとして取得されますよね。 > 案2:これで出来ました > Points.RemoveAt(1) > Points.InsertXY(1, 3, 10) いやいやいやいや。 なぜ 3, 10 を指定したのでしょうか。その数字はどこから来たものですか? 当初の質問を見る限り、Load イベントで「.AddXY(1.0, 2.0)」がセットされていた .Points(1) の箇所の Y 値を、2 から 10 へ変更するコードを求めていたはずですよね。 であれば、「.InsertXY(1, 1.0, 10.0)」となるはずだと思うのですが…。 With Me.Chart1.Series(0).Points .RemoveAt(1) .InsertXY(1, 1, 10) End With でもまぁ、今回は案3を使うのが良いでしょうね。 > 案3:表示が更新されません、この後になにか必要なのでしょうか? > Points[1].SetValueXY(3,1) 表示が更新されないどころか、そもそも動作すらしないはず…。 Visual Basic で Points[1] 表記は許されないので、コンパイルエラーになることでしょう。 今回は、XValue は置き換えずに YValue のみを差し替えるのですから、 'Me.Chart1.Series(0).Points(1).ValueX = 1.0 Me.Chart1.Series(0).Points(1).ValueY = { 10.0 } と書けば十分です。 先の回答でも、私は「SetValueXY メソッド」ではなく、 「XValue / YValues プロパティ」と回答していましたよね? なお、 Me.Chart1.Series(0).Points(1).SetValueXY(1.0, 10.0) の書き方だと、DataPoint の変化がチャートに伝わりません。 この方法で書き換えた場合には、 Me.Chart1.Series(0).Points.Invalidate() または Me.Chart1.Invalidate() などとして、データが更新されたことをチャートに伝える必要があります。 |