|
■No99610 (わぎゃん さん) に返信
> 「表示するものと保存するものを別に 2 つ作ったら」に関してですが
> PrePaintやPostPaintまで使い回すことができないと思うのですが、
> Paintイベントだけはそれぞれに対して作る必要がありますか?
そのイベントハンドラの中身次第です。
■同じイベントハンドラを複数のコントロールに割り当てる方法
イベントに割り当てるイベントハンドラ(メソッド)は同じものを使うことができます。
以下のように、chart1 〜 chart3 まで同じ「chart_PrePaint」を割り当てることができます。
もし、これらのイベントの中で呼び出し元の Chart コントロールのインスタンスを使いたいなら、sender 引数をダウンキャストすれば良いでしょう。
chart1.PrePaint += chart_PrePaint;
chart2.PrePaint += chart_PrePaint;
chart3.PrePaint += chart_PrePaint;
private void chart1_PrePaint(object sender, /* 略 */ e)
{
Chart chart = (Chart)sender; // 呼び出し元Chart
//TODO: chartに対する処理を書く
}
■イベントハンドラの中身を「共通のメソッド」として分離する方法
または、「共通のメソッドを呼ぶイベントハンドラにする」というようにメソッド分割すれば良いでしょう。
chart1.PrePaint += chart1_PrePaint;
chart2.PrePaint += chart2_PrePaint;
chart3.PrePaint += chart3_PrePaint;
private void chart1_PrePaint(object sender, /* 略 */ e)
{
PrePaint(chart1, e);
}
private void chart2_PrePaint(object sender, /* 略 */ e)
{
PrePaint(chart2, e);
}
private void chart3_PrePaint(object sender, /* 略 */ e)
{
PrePaint(chart3, e);
}
private void PrePaint(Chart chart, /* 略 */ e)
{
//TODO: 引数chartに対するPrePaintイベント共通の処理を書く
}
|