2017-07-27 16 views
1

VBチャートを使用したVB2010:1つのシリーズをポイントチャートとして追加しました。時には1000以上のポイントがあり、ポイントラベルがあまりにも混乱してしまいます。私はスマートラベリングを持っています:MSチャートfor .NETのオフポイントラベルをオフにする

cht.Series("srs").SmartLabelStyle.Enabled = True 

しかしそれでもそれでも悪いです。そこで、ラベルを消すためのコンテキストメニューを追加しました。ユーザーはスポットにズームインし、ラベルをオンに戻したい場合はズームインすることができます。すべてのデータポイントをループせずにこれを行う方法を見つけることはできません。

私は完全に

cht.Series("srs").Enabled = False 

でポイントとラベルを非表示にすることができますしかし、私はちょうどラベルが隠され、その後、ユーザーはそれを選んだしたときに再表示することにしたいです。

助けてください。

編集: 1つのコマンドでラベルをオン/オフする方法が見つからないため、現在シリーズの各ポイントを循環しています。

Me.Cursor = Cursors.WaitCursor 
    Application.DoEvents() 

    'suspend updating UI 
    cht.Series.SuspendUpdates() 

    'cycle through all points in the series and set the label either to an empty string or whatever is cached in the Tag property. 
    'todo: this is not efficient for large datasets but its the only thing we have. 
    For Each pt As DataPoint In cht.Series("srs").Points 
     If mnuDisplayLabels.Checked Then 
      pt.Label = pt.Tag.ToString 
     Else 
      pt.Label = "" 
     End If 
    Next pt 

    'resume updating UI 
    cht.Series.ResumeUpdates() 

    'force redraw of chart 
    cht.Update() 

答えて

2

私はあなたがループする必要があると思いますが、あなたはすべての点についてそれをやるまで、UIの更新を中断したいと思います。

chart1.Series.SuspendUpdates(); 

foreach (Series s in chart1.Series) 
{ 
    s.IsValueShownAsLabel = false; 
} 

chart1.Series.ResumeUpdates(); 
+0

これは私が恐れていたものですが、私はそれを撃つことができます。 – sinDizzy

関連する問題