dポイントプレゼントキャンペーン実施中!

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

1つずつ0から9までifでチェックしなければいけないのでしょうか。

A 回答 (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;
}
    • good
    • 0

環境が不明ですが、一般に数値チェックは次のように行います。


例では、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は文字列セルであること
いかがでしょうか?
    • good
    • 0

入力された文字列が、



const char *s;

で渡されるとすると、

if (!isdigit((unsigned char)s[0]) || s[1] != '\0')
{
 /* エラーメッセージ */
}

でOKです。
    • good
    • 0

プラットホームや処理系を教えてください。


環境によっては、もしかするとテキストボックスの属性に
「数字だけが入力できる」という縛りを設けることができるかもしれません。

この回答への補足

遅れてすいません、

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

補足日時:2008/12/11 19:41
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!