7

C# (.NET 4.0) で小さなアプリケーションを作成しています。numericUpDown で値が変化したときにイベントを発生させたいのですが、numericUpDown ValueChanged は、コントロールがフォーカスを失った場合や複数の変更があった場合に発生するようです。

詳細な説明: 変更がすぐに反映されるように、(OnPropertyChanged) numericUpDown をオブジェクトのプロパティにバインドしています。しかし、numericUpDown のこの新しく変更された値を使用して、何か (グローバル/オブジェクトに関連しない) を計算する必要もあります。しかし、ValueChanged イベントを使用すると、起動が遅すぎます。

簡単な説明:

OnPropertyChanged と同様の機能を持つイベントが必要です。

私に何ができる?

編集: ValueChanged イベント ハンドラーで、オブジェクトに対していくつかの計算を行いましたが、変更された値がまだオブジェクト プロパティにコミットされていないため、ValueChanged イベントが遅れていると考えました。

ご協力ありがとうございました。

4

1 に答える 1

9

ValueChanged は、使用する必要があるものです。チェックしたところ、コントロールがフォーカスを失ったときに起動せず、あなたが主張するように複数の変更を入力できません。本当に速く 3 回クリックすると、メッセージ ボックスには最初のクリックから期待される値が表示されます。ValueChanged の起動が遅すぎるとあなたが言うところがわかりません。画面に再描画される前でも、メッセージ ボックスに新しい値が表示されています。

    private void numericUpDown1_ValueChanged(object sender, EventArgs e)
    {
        MessageBox.Show("Value changed to " + numericUpDown1.Value.ToString());
    }
于 2012-06-23T13:04:50.770 に答える