アプリケーションで MSChartControl を使用しています。チャート コントロールでは、チャート コントロールの選択メカニズムを使用して、ChartArea の CursorX を使用して画像の範囲を選択する画像を表示します。
SelectionRangeChanged イベントでは、ユーザーが選択を行ったときに通知を受け取り、選択されていない領域に色を付けて元の選択を非表示にしたいと考えています。
ClearSelection がないため (少なくともそのようなメソッドは見つかりませんでした)、選択が行われなかったときに Cursor が最初に持っていた値に選択を設定します。
private void chartTopoAP_SelectionRangeChanged(object sender, CursorEventArgs e)
{
int Start = (int)e.NewSelectionStart;
int End = (int)e.NewSelectionEnd;
MathUtil.SwapIf(Start > End, ref Start, ref End);
mySelectedRange = new Tuple<int, int>(Start, End);
chartTopoAP.ChartAreas[0].CursorX.SetSelectionPosition(double.NaN, double.NaN);
chartTopoAP.Invalidate();
chartTopoAP.Update();
}
ペイント方式では自分で絵を描きます。
ウィンドウとチャートコントロールのサイズを変更しない限り、これはうまくいくようです。
1) ウィンドウを開始し、何かを選択します 2) チャートコントロールのサイズを変更します (大きい/小さいは関係ありません) 3) 別の選択を行います
-> その結果、明らかにコントロールが一部のグラフィックスを内部的にバッファリングし、コントロールのサイズを変更する前のサイズのチャートが表示されます。
行をコメントアウトすると
chartTopoAP.ChartAreas[0].CursorX.SetSelectionPosition(double.NaN, double.NaN);
できます。しかし、どうすれば選択をクリアできますか?
ありがとうマーティン