• ベストアンサー

整数かどうかチェックする

テキストボックスに数字を入力させてボタンを押した時、 その数字が1桁の整数(0から9)でなければエラーメッセージを出すようにしたいのですが、何か簡単なコードはありますか? (5.6などの小数や、"a"や"あ"など数字ではない文字が入力された場合も同様にエラーを出したい) 1つずつ0から9までifでチェックしなければいけないのでしょうか。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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)
回答No.3

環境が不明ですが、一般に数値チェックは次のように行います。 例では、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)
回答No.2

入力された文字列が、 const char *s; で渡されるとすると、 if (!isdigit((unsigned char)s[0]) || s[1] != '\0') {  /* エラーメッセージ */ } でOKです。

  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

プラットホームや処理系を教えてください。 環境によっては、もしかするとテキストボックスの属性に 「数字だけが入力できる」という縛りを設けることができるかもしれません。

mobsquad08
質問者

補足

遅れてすいません、 Visual studio2005にて、Visual C++を用いたフォームアプリケーションを作っています。

関連するQ&A