none
NumericUpDownのValue更新タイミングについて RRS feed

  • 質問

  • NumericUpDown コントロールを2個作成して、2番目にTextChanged を追加しました。

    (Maximum = 100 Minimum = 0)

    1.Form1.Designer.csの宣言部

    private System.Windows.Forms.NumericUpDown numericUpDown1;
    private System.Windows.Forms.NumericUpDown numericUpDown2;

    2.イベント追加

    this.numericUpDown2.TextChanged += numericUpDown2_TextChanged;

    3.イベント処理メソッド

     private void numericUpDown2_TextChanged(object sender, EventArgs e)
     {
          Console.WriteLine(this.numericUpDown2.Value);
     }

    ------------------------------------------------------------------------------

    Form上にキーボードで”101”を入力する時、にnumericUpDown1はEnterキーやフォーカスを失うまで"101”は入力まま残っていますが、

    numericUpDown2は”101”を入力直後に自動で”100”に変わります。

    "101”を入力直後 -> TextChangedイベントが発生すると思いますが、Valueプロパティを呼ぶだけで

    Minimum,Maximunの値で修正されるものでしょうか?

    2013年11月6日 9:20

回答

  • 使用されている.NET Frameworkのバージョンは分かりませんが、いずれであってもNumericUpDown.TextChangedイベントはユーザーが使用するものではありません。

    つまりこのイベントを使用することで内部状態が不正になっても文句は言えないため、Valueプロパティの挙動どうこうも何も言えません。まぁ気になるならソースコードを参照すれば何かわかるかもしれませんが、このイベントをそもそも使用しないことをお勧めします。

    • 回答の候補に設定 星 睦美 2013年11月8日 2:36
    • 回答としてマーク 星 睦美 2013年11月22日 5:41
    2013年11月6日 22:46