2016-09-18 13 views
0

NumericUpDown(nudqty)に入力できる最大整数を制限する方法を教えてください。私のコードは下向きの矢印を使って値を変更するときに値を制限しますが、入力するときは値を制限します。 NumericUpDownで可能でない場合は、TextBoxに変更してください。DataGridViewから選択した値に応じてNumericUpDown値を制限します

private void dgv1_CellClick(object sender, DataGridViewCellEventArgs e) 
{ 
    lblqty.Text = dgv1.SelectedRows[0].Cells[5].Value.ToString(); 
    nudqty.Maximum = Convert.ToDecimal(lblqty.Text); 
} 

my form

+0

NUDは検証されませんが、それはあなたが行われているという事実を知っていた後まで入力したものタイピング。 "100"と入力してBackspaceキーを押すと、余分な "0"が修正される可能性があります。その事実を知る唯一の方法は、NUDがフォーカスを失ったときです。必然的に、[追加]ボタンを押すまで、最大プロパティ値は適用されません。これを回避するには、Validatingイベントを使用し、Maximumを設定しないで、不平を言うことができます。しかし、実際には、ユーザーが簡単にカートの間違いを修正できることを確認してください。 –

+0

コントロールがフォーカスを失ったとき、またはユーザーが上/下ボタンをクリックしたとき、またはユーザーがキーボードの矢印キーを使用して値を変更したときに、「最大」がコントロールに適用されます。そして、すべての場合において、コントロールから 'Value'を尋ねると' Maximum'が適用され、値があなたに返されます。だから、ユーザーが入力するテキストについて心配しないでください。 'Maximum'プロパティを設定し、' Value'プロパティを使うと常に有効な値を取得します。 –

+0

@HansPassant Validatingを使用してサンプルコードを表示できますか?私はそれを使う方法を知らない。 – ItaChi

答えて

0

FullRowSelectDataGridViewSelectionModeを設定し、DataGridViewSelectionChangedイベントを処理します。 CurrentRowを使用して値を見つけた後のイベントでは、0にNumericUpDownValueをリセットして、設定された抽出された値にMaximum

private void dataGridView1_SelectionChanged(object sender, EventArgs e) 
{ 
    int max = (int)this.dataGridView1.CurrentRow.Cells[5].Value; 
    this.numericUpDown1.Value = 0; 
    this.numericUpDown1.Maximum = max; 
} 
+0

ちょうど私の最大値よりも大きな値を入力しても、NUD値が最大値にリセットされていることを認識しました。私が他の解決策を見つけられないならば、私はちょうどこれに固執して(あなたの答えをマークする)と思います。ありがとう。 – ItaChi

+0

'Maximum'を設定し、' Value'を読み込むときに 'Value'を心配する必要はありません。あなたが考えることができる他のすべてのソリューションは 'Maximum'プロパティを使ってバリデーションを実行する必要がありますが、' Maximum'プロパティはあなたのためにそれを実行します。なぜ別のアプローチが有用なのか分かりません。 –

関連する問題