2011-12-16 16 views
3

私はSystem.Windows.Forms.NumericUpDownコントロールを持つフォームを持っています。NumericUpDownコントロールの検証前に、そのテキストにアクセスするにはどうすればよいですか?

範囲が0〜100で、現在の値(スピナーを介して到着した)が100であるとします。許容範囲外の数値(567など)を入力できますが、[OK]をクリックすると値をリセットするフォームでは、単に範囲外の値を100に設定してフォームを閉じます。

お客様は、番号が範囲外であるという明示的なメッセージが必要です。だから、フォーム上のNumericUpDown.Textプロパティをチェックしてみましたが、そのプロパティは "567"ではなく "100"を返します。

コントロールに表示されるテキストが「567」であるという事実をどこで「キャッチ」できますか?

答えて

7

あなたはNumericUpDown内部TextBoxへの参照を取得し、そのValidatingイベントを処理することにより、無効な値をキャプチャするためにthis questionからの回答を使用することができます。あなたのハンドラでは、TextBox.Textプロパティは、テストする値が無効になります。 .NET 2.0 Winformsで私のために働きます。

+0

これは私が美しく欲しいものありません。ありがとうございました! – John

2

あなたはこれを試みることができる、唯一のものは値がまだ100にリセットされるということですが、ユーザーはまだ範囲外の値が通知されます。

private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
     { 
      int val = Convert.ToInt32(((UpDownBase)numericUpDown1).Text); 

      if (val > 100) 
      { 
       MessageBox.Show("The value " + ((UpDownBase)numericUpDown1).Text + 
       " is out of range", "Validation Error", MessageBoxButtons.OK, MessageBoxIcon.Error); 

       e.Cancel = true; 
      } 
     } 
+0

お時間をいただきありがとうございます。これは役に立ちます。 ++ – John

+0

あなたは大歓迎です:) –

+0

(UpDownBase)は私のためのトリックでした。 – Mahdi

関連する問題