2

現在、名前、住所、郵便番号、州、年齢で構成されるWinFormを使用しています。

ユーザーがデータを入力したら、[終了]ボタンをクリックして、空白のフィールドがないことを確認し、データをファイルに保存します。テキストボックス(ZipField)に数字のみが含まれていることを確認する郵便番号検証を追加したいと思います。

    private void Btn_Click(object sender, EventArgs e)
    {

        if (String.IsNullOrEmpty(NField.Text) || String.IsNullOrEmpty(AField.Text) ||
            String.IsNullOrEmpty(ZField.Text) || String.IsNullOrEmpty(SField.Text) ||
            String.IsNullOrEmpty(AField.Text))
        {
            MessageBox.Show("Please complete", "Unable to save", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        return;
        }
        saveInfo();
        Form myForm = Start.getForm();
        myForm.Show();
        this.Close();
    }
4

3 に答える 3

4

参照: http: //www.codeproject.com/Articles/13338/Check-If-A-String-Value-Is-Numeric

public bool isNumeric(string val, System.Globalization.NumberStyles NumberStyle)
{
    Double result;
    return Double.TryParse(val,NumberStyle,
        System.Globalization.CultureInfo.CurrentCulture,out result);
}

編集:

使用法

private void saveAndExitBtn_Click(object sender, EventArgs e)
    {
        if (!isNumeric(custZipField.Text, System.Globalization.NumberStyles.Integer))
        {
            MessageBox.Show("Please enter a valid post code", "Unable to save", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            return;
        }

        if (String.IsNullOrEmpty(custNameField.Text) || String.IsNullOrEmpty(custAddressField.Text) ||
            String.IsNullOrEmpty(custZipField.Text) || String.IsNullOrEmpty(custStateField.Text) ||
            String.IsNullOrEmpty(custAgeField.Text))
        {
            MessageBox.Show("Please complete the entire form", "Unable to save", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);

        return;
        }

        //save the data
        saveNewCustomerInfo();
        //next, retrieve the hidden form's memory address
        Form myParentForm = CustomerAppStart.getParentForm();
        //now that we have the address use it to display the parentForm
        myParentForm.Show();
        //Finally close this form
        this.Close();
    }//end saveAndExitBtn_Click method

    public bool isNumeric(string val, System.Globalization.NumberStyles NumberStyle)
    {
        Double result;
        return Double.TryParse(val, NumberStyle,
            System.Globalization.CultureInfo.CurrentCulture, out result);
    }
于 2012-12-08T04:12:22.590 に答える
0

技術的には、残りの部分がある場合に簡単な検証を含めることができます。

try
{
    var zipCode = Convert.ToInt32(custZipField.Text);
}
catch () // Invalid input and such

ただし、これらすべてのプロパティ(名前、住所、年齢、郵便番号など)を保持するモデルクラスを作成し、これらすべてを検証してそれに応じて対応するIsValidというメソッドを用意することをお勧めします。

編集:

Zebの回答によると、TryParseを使用できます。

int result;
var isNumeric = Int32.TryParse(custZipField.Text, out result);
于 2012-12-08T04:12:27.927 に答える
0

これは、trycatchなしで実行できます。

Int32 zipCode = 0;
Int32.TryParse(custZipField.Text , out zipCode);

zipCodeがゼロの場合、空custZipField.Textであるか数値ではありません

于 2012-12-08T04:26:09.367 に答える