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

わんくま同盟

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

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


■86371 / )  Re[1]: テキストボックスでEnter キーを押した場合のプログラミン
□投稿者/ 魔界の仮面弁士 (1547回)-(2018/01/23(Tue) 15:04:31)
No86368 (Yukihiko さん) に返信
> 画面上に 3 のテキストボックス TxtBox1、TxtBox2、TxtBox3 があり、
> フォーカスが TxtBox2 にあるとき、Enter キーを押すと

TextBox1 で Enter を押したときは、特に何もしなくて良いのですね?


> TxtBox1 の内容と TxtBox2 の内容を加算し、

加算を行うには、入力内容が「数値」であることを保証しなければいけませんね。

数値入力に特化させるのであれば、
TextBox の Text プロパティの代わりに
NumericUpDown の Value プロパティを使うのが簡単です。
(Windows フォームアプリケーション の場合)

NumericUpDown を使えば、数値以外が入力されることを防げますし、
最大値(Maximum)、最小値(Minimum)、小数点以下の桁数(DecimalPlaces)も
指定しておくこともできるので、プログラミングの手間が省けます。


どうしても TextBox を使いたいのであれば、
追加の入力検査処理が必要になってきます。

 'TextBox の内容を数値として受け取るための変数
 Dim a, b As Decimal
 
 If Decimal.TryParse(TextBox1.Text, a) AndAlso _
   Decimal.TryParse(TextBox2.Text, b) Then
   '
   'TextBox1、TextBox2 の両方共に数値が入力されていた
   '
   Dim c As Decimal = a + b '両者を加算
   '
   '(加算した結果を表示・加工・判定するための処理をここに記述)
   '
 Else
   '
   '非数値が入力されていた
   '
 End If



> ある一定値以上だとエラーと見なして、
> TxtBox1、TxtBox2 の内容をクリアーして

範囲外の値が入力された場合、エラーであることを
ユーザーに(色やメッセージなどで)一切伝えずに
いきなりクリアしてしまってよいのですか?


> フォーカスを TxtBox1 に移動させたいのです。
> 条件を満たした場合は、TxtBox3 にフォーカスを移動させたい

条件を満たしているかどうかを If 文で判断した上で、
  TextBox1.Focus()
のようにすれば、フォーカスが移動できます。
フォーカスの移動については、ここの掲示板のサンプルにも記載されていますね。
http://jeanne.wankuma.com/tips/vb.net/control/focus.html


> プログラミングの方法が解りません。

どこまで分かっていて、どの部分で詰まっているのかを明確にしてもらえると回答しやすいです。

たとえば Enter キーが押された時に、何か追加の処理を行いたいのであれば、このように書けます。

Private Sub TextBox2_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox2.KeyPress
 If e.KeyChar = ControlChars.Cr Then
  e.Handled = True
  '
  '
  'Enter が押された時の処理をここに記述
  '
  '
 End If
End Sub
返信 編集キー/


管理者用

- Child Tree -