チャートコントロール付きのWindowsフォームがあります。私のコードでは、新しいチャートコントロールを動的に生成します。既存のチャートコントロール(chartCC)を新しいチャートコントロール(chart)に置き換える必要があります。既存のチャートコントロールを新しい動的に作成されたチャートコントロールに置き換えます。
方法1
Chart chart = Charts.CreateNewChart(chartCC.Location.X, chartCC.Location.Y, chartCC.Width, chartCC.Height, dataIdx, 16, 12, 5f, 5f, "BB");
chartCC = chart;
方法1動作しません:私はそれを行うための二つの方法を試してみました。チャートコントロールに視覚的に何も起こりません。
方法2
Chart chart = Charts.CreateNewChart(chartCC.Location.X, chartCC.Location.Y, chartCC.Width, chartCC.Height, dataIdx, 16, 12, 5f, 5f, "BB");
chartCC.ChartAreas.Clear();
foreach (var ca in chart.ChartAreas)
{
chartCC.ChartAreas.Add(ca);
}
//Chart Series
chartCC.Series.Clear();
foreach(var cs in chart.Series)
{
chartCC.Series.Add(cs);
}
//Chart Titles
chartCC.Titles.Clear();
foreach (var title in chart.Titles)
{
chartCC.Titles.Add(title);
}
//Chart Annotations
chartCC.Annotations.Clear();
foreach (var annotation in chart.Annotations)
{
chartCC.Annotations.Add(annotation);
}
chartCC.ChartAreas[0].RecalculateAxesScale();
chartCC.ChartAreas[0].AxisX.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
chartCC.ChartAreas[0].AxisY.MajorGrid.LineDashStyle = ChartDashStyle.Dash;
chartCC.ChartAreas[0].CursorX.IsUserEnabled = true;
chartCC.ChartAreas[0].CursorX.IsUserSelectionEnabled = true;
chartCC.ChartAreas[0].CursorX.SelectionColor = System.Drawing.Color.Transparent;
chartCC.Invalidate();
方法2つの作品は、しかし、それは私のために大きな問題が発生します。自分のコードにCursorPositionChangedイベントハンドラがあります。私は方法2
を使用する場合
private void chartCC_CursorPositionChanged(object sender, CursorEventArgs e)
{
}
ただし、このイベントハンドラは、かわりに私のイベントハンドラを維持しながら、これを行うための最善の方法は何ですか発生しませんか?
_Charts.CreateNewChart_それは何であるべきか、それとも何ですか?あなた自身のライブラリ?あなたは新しいコレクションをコントロールコレクションに追加しませんでした: 'chart.Parent = chartCC.Parent;'おそらく 'chart.BringToTop();' – TaW
Charts.CreateNewChartは、必要な新しいチャートを作成する独自のライブラリです表示されます。私は、新しいウィンドウフォームを生成して追加することでそれをテストしました。それはうまく動作します。私の問題は、既存のチャートコントロールを置き換えることです – user1035217
あなたの '親'と 'BringToTop'が正常に機能しました。グラフが表示されます。しかし、私のすべてのイベントハンドラ(CursorPositionChanged、MouseMove)は機能していません。 – user1035217