tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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()
などとして、データが更新されたことをチャートに伝える必要があります。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。