C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■86479 / )  Re[2]: テキストボックスでEnter キーを押した場合のプログラミン
□投稿者/ Yukihiko (16回)-(2018/02/02(Fri) 10:40:34)
No86371 (魔界の仮面弁士 さん) に返信
魔界の仮面弁士さま、詳しい解説有り難う御座いました。いろいろと勉強になりました。
その後、二つほど、疑問が御座いますのでお教えを賜りたく思います。

1. NumericUpDown を 9 個画面に貼り付け、TabStop プロパティを True としました。このとき、Tab キーおよび Enter キーでフォーカスは移動するのですが、9 番目の NumericUpDown で Tab キーまたは Enter キーをおすとフォーカスが消え、もう一度 Tab キーまたは Enter キーを押すと一番目の NumericUpDwn にフォーカスが戻ります。9 番目の NumericUpDown からすぐに 1 番目の
NumericUpDown にフォーカスを移動させるには、どの様にしたら良いでしょうか ? なお、NumericUpDown は TabPage に貼り付けてあります。

2. NumericUpDown2 で NumericUpzDown1 との合計値が 1800 を越えた場合、MessageBox でエラーを表示しています。同様に、NumericUpDown4 でも NumericUpDown1 から 4 の合計値が 1800 を越えた場合に messageBox で同じようにエラーを表維持したいのですが、コンパイルエラーとなってしまいます。この解決策をお教え下さい。

プログラムを以下に示します。

Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles MyBase.KeyDown
If (e.KeyCode = Keys.Enter) Then
Dim forward As Boolean = e.Modifiers <> Keys.Shift

Me.SelectNextControl(Me.ActiveControl, forward, True, True, True)
e.Handled = True
End If

End Sub

Private Sub Numericupdown_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown2.KeyPress
If ((e.KeyChar = ControlChars.Cr) Or (e.KeyChar = ControlChars.Tab)) Then
e.Handled = True
Dim Ret As DialogResult

If (NumericUpDown1.Value + NumericUpDown2.Value > 1800) Then
Ret = MessageBox.Show("1st Start Time と 1st Control Time の合計値が 30 分を越えています。", _
"警告", MessageBoxButtons.OK, MessageBoxIcon.Warning)
NumericUpDown1.Value = 0
NumericUpDown2.Value = 0
NumericUpDown1.Focus()
End If
End If
End Sub
'このロジックを追加すると上のサブルーチンでエラーとなります。
Private Sub Numericupdown_KeyPress(ByVal sender As Object, ByVal e As KeyPressEventArgs) Handles NumericUpDown4.KeyPress
If ((e.KeyChar = ControlChars.Cr) Or (e.KeyChar = ControlChars.Tab)) Then
e.Handled = True
Dim Ret As DialogResult

If (NumericUpDown1.Value + NumericUpDown2.Value + NumericUpDown3.Value + NumericUpDown4.Value > 1800) Then
Ret = MessageBox.Show("1st Start Time から 2nd ControlTime までの合計値が 30 分を越えています。", _
"警告", MessageBoxButtons.OK, MessageBoxIcon.Warning)
NumericUpDown1.Value = 0
NumericUpDown2.Value = 0
NumericUpDown1.Focus()
End If
End If
End Sub

以上、宜しくお願い致します。
返信 編集キー/


管理者用

- Child Tree -