- ベストアンサー
整数かどうかチェックする
テキストボックスに数字を入力させてボタンを押した時、 その数字が1桁の整数(0から9)でなければエラーメッセージを出すようにしたいのですが、何か簡単なコードはありますか? (5.6などの小数や、"a"や"あ"など数字ではない文字が入力された場合も同様にエラーを出したい) 1つずつ0から9までifでチェックしなければいけないのでしょうか。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 >>Visual C++を用いたフォームアプリケーションを作っています。 C++CLIでしょうか。 でしたら、KeyPressを処理するのが手っ取り早いです。テキストボックスのイベントプロパティにKeyPressを追加して、以下の様にします。 尚、TextChanged内での処理はお勧め出来ません。 System::Void Form1::KeyPress(System::Object^ sender, System::Windows::Forms::KeyPressEventArgs^ e) { using namespace System::Windows::Forms; //数値なので引き返す if(wchar_t::IsDigit(e->KeyChar)) return; //不正入力を表示する MessageBox::Show(e->KeyChar + " は受け付けません", "不正入植です", MessageBoxButtons::OK); //ココにtrueを代入するとテキストボックスへの入力を拒絶できる e->Handled = true; }
その他の回答 (3)
- yunose
- ベストアンサー率0% (0/1)
環境が不明ですが、一般に数値チェックは次のように行います。 例では、VisualBasic(ExcelやAccessでもOK)でやってみましょう。 sTextに値が入ってるとします。 if (lenb(cstr(sText))<>1) or (sText<"0") or (sText>"9") then msgbox("NG") end if ☆基本は、1桁であること、文字0-9がASCIIコードで順にならんでいるので <0と>9をチェックすればOKです EXCEL式ならば =IF((LENB(A1)<>1) + (A1<"0") + (A1>"9"),"NG","OK") でしょうか ☆注:A1は文字列セルであること いかがでしょうか?
- jacta
- ベストアンサー率26% (845/3158)
入力された文字列が、 const char *s; で渡されるとすると、 if (!isdigit((unsigned char)s[0]) || s[1] != '\0') { /* エラーメッセージ */ } でOKです。
- asuncion
- ベストアンサー率33% (2127/6289)
プラットホームや処理系を教えてください。 環境によっては、もしかするとテキストボックスの属性に 「数字だけが入力できる」という縛りを設けることができるかもしれません。
補足
遅れてすいません、 Visual studio2005にて、Visual C++を用いたフォームアプリケーションを作っています。