3

この C# Windows アプリケーションを構築しています。特定のフォームで、maskedtextbox を使用して最大 3 桁の数字を入力し、次にこれらすべてのデータを挿入クエリでデータベースに送信する必要があるため、int に変換しますが、これらの maskedtextboxes を空のままにするとエラーが発生するという問題があります。

int scd_user_comm = Convert.ToInt32(maskedTextBox1.Text);

エラーは次のとおりです。

入力文字列は、正しい形式ではありませんでした。

データベースの対応するフィールドは null を許可するため、空のままにしてもエラーは発生しません。誰でも助けてもらえますか?

副次的な質問:: textbox または maskedtextbox を使用して、ユーザーが 0 から 100 までの数値のみを入力できるようにすることはできますか? 前もって感謝します。

4

2 に答える 2

2

Int32.TryParse() メソッドを試すことができます

int scd_user_comm;
if(Int32.TryParse(maskedTextBox1.Text, out scd_user_comm) == false)
     scd_user_comm = 0;

これにより、整数変数と maschedTextBox を操作するために必要なすべての柔軟性が得られます。

maskTextBox に設定された数値のみを受け入れるように強制するには

   maskTextBox1.Mask = "999";
   maskTextBox1.TextMaskFormat = MaskFormat.ExludePromptAndLiterals;

ただし、これは入力された数値が 0 から 100 の間であることを確認するには十分ではありません。この結果を取得するには、Validating イベントを使用し、範囲外の場合は入力を拒否する必要があります。

    private void maskedTextBox1_Validating(object sender, CancelEventArgs e)
    {
        int num;
        if (Int32.TryParse(maskedTextBox1.Text, out num) == true) 
        {
            if (num < 0 || num > 100)
            {
                MessageBox.Show("Insert number between 0 and 100");
                e.Cancel = true;
            }
        }
    }
于 2012-06-28T12:07:07.433 に答える
1

代わりに TryParse を使用できます。

int scd_user_comm;
if(!Int32.TryParse(maskedTextBox1.Text, out scd_user_comm))
{
     // Do something to notify the user that the text isn't a number.
}
于 2012-06-28T12:06:57.547 に答える