0

プログラムでselectionRangeChangedイベントを作成したいのですが、実際にはその方法がわかりません

ここに画像の説明を入力

 private void btn_10D_Click(object sender, EventArgs e)
    {
        double varRange = 10;
        double var_Sel1 = DatesX[0].ToOADate();

        Chart1.ChartAreas["ChartArea1"].CursorX.IsUserEnabled = true;
        Chart1.ChartAreas["ChartArea1"].CursorX.IsUserSelectionEnabled = true;
        Chart1.ChartAreas["ChartArea1"].CursorX.SelectionColor = Color.LightGray;
        Chart1.ChartAreas["ChartArea1"].CursorX.SelectionStart = var_Sel1;
        Chart1.ChartAreas["ChartArea1"].CursorX.SelectionEnd = varRange + var_Sel1;
        Chart1.ChartAreas["ChartArea1"].CursorX.Position = varRange + var_Sel1;
        Chart1.SelectionRangeChanged += new EventHandler<CursorEventArgs>(Chart1_SelectionRangeChanged);

    }

    void Chart1_SelectionRangeChanged(object sender, CursorEventArgs e)
    {
        throw new NotImplementedException();
    }

ありがとうございました

4

1 に答える 1

1

C# のすべてのイベントについて、クラスの作成者がクラス外でイベントを発生させるために特別な努力を払わなければ、イベントを発生させることは不可能であるということは事実です。

MSDNによると

Chart.SelectionRangeChanged イベント 選択の開始位置または終了位置が変更されたときに発生します。

しかし、私のテストから、プログラムではなくユーザーによって変更された場合にのみ起動されることがわかります。

私があなたの意図を正しく理解していれば、チャートの下にあるこれらの小さなボタンを処理したいと考えており、btn_10D_Clickメソッドはそのうちの 1 つのクリック ハンドラーです。この行を移動してみてください

Chart1.SelectionRangeChanged += new EventHandler<CursorEventArgs>(Chart1_SelectionRangeChanged);

コンストラクターに追加し、一度呼び出されるようにします (他のハンドラーから削除します)。これにより、ユーザーが選択を変更したときにコードが実行されるようになります。ボタンに対して同じコードを実行する場合は、ハンドラーの内容をメソッドに抽出し、それをフォーム ボタン クリック ハンドラーと呼ぶ必要があります。

void Chart1_SelectionRangeChanged(object sender, CursorEventArgs e)
{
    DoSomething(/*some arguments if you need them*/);
}
private void btn_10D_Click(object sender, EventArgs e)
{
     \\your code
     DoSomething();
 }
于 2012-07-09T06:55:55.940 に答える