winform で MSCharts を使用して、いくつかのグラフを表示しています。ユーザーがズームできるようにグラフを設定しました。
chart1.ChartAreas[0].CursorX.IsUserEnabled = true;
chart1.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
chart1.ChartAreas[0].AxisX.ScaleView.Zoomable = true;
chart1.ChartAreas[0].AxisX.ScrollBar.IsPositionedInside = true;
また、MouseDown イベントと Call Hit Test Method を使用して、チャートをドリルダウンし、他のチャート情報を表示します。:
private void chart1_MouseDown(object sender, MouseEventArgs e)
{
//***** Call Hit Test Method
HitTestResult result = chart1.HitTest(e.X, e.Y);
if (result.ChartElementType == ChartElementType.DataPoint || result.ChartElementType == ChartElementType.DataPointLabel)
{
//*************************Goes into the Pie Chart - Dept
int z = result.PointIndex;
result.Series.XValueType = ChartValueType.DateTime;
DateTime x = DateTime.FromOADate(result.Series.Points[z].XValue);
string name = result.Series.Name.ToString();
name = name + "(" + x.ToShortDateString() + ")";
if (funChartExists(name) == false)
{
subMakeNewPieSeries(result.Series.Name.ToString(), x, name);
}
chart1.ChartAreas["Pie"].Visible = true;
chart1.ChartAreas["Task"].Visible = false;
chart1.ChartAreas["Default"].Visible = false;
chart1.Series[name].Enabled = true;
chart1.Legends[0].Enabled = false;
chart1.ChartAreas["Default"].RecalculateAxesScale();
}
chart1.Invalidate();
}
チャートを最初のビューにリセットするボタンもあります。
private void cmbReset_Click(object sender, EventArgs e)
{
chart1.ChartAreas["Pie"].Visible = false;
chart1.ChartAreas["Task"].Visible = false;
chart1.ChartAreas["Default"].Visible = true;
chart1.Legends[0].Enabled = true;
for (int x = 0; x < chart1.Series.Count; x++)
{
if (chart1.Series[x].ChartArea == "Pie" || chart1.Series[x].ChartArea == "Task")
{
chart1.Series[x].Enabled = false;
}
}
chart1.ChartAreas["Default"].RecalculateAxesScale();
chart1.Invalidate();
}
私の問題は、(リセット ボタンを使用して) メイン チャートに戻るときです。チャートは、最初のドリル ダウンからのマウス クリックを保持しており、2 回目のクリック (またはマウス アップ) でズームインするのを待っています。その 2 番目のズーム ポイントを待っている暗い灰色の背景選択をドラッグしているマウス。
マウス選択のズーム値をリセットする方法、またはヒット テストを実行するときにオフにし、リセット後にオンに戻す方法はありますか?