web-dev-qa-db-ja.com

Windowsフォーム上のフィールドのデータ検証を実行する最も簡単な方法

ユーザーが下部にある計算ボタンを押す前に特定のフィールドに値を入力するように強制したいWindowsフォームプロジェクトがあります。フィールドには、3つのペアのラジオボタン、5つのテキストボックス、1つのコンボボックスが含まれます。したがって、基本的にこれらのすべてのフィールドには、計算を実行するための値が含まれている必要があります。さらに、テキストボックスには数値が含まれている必要があります。さらに、これらのほとんどに設定されている最大値を設定したいテキストボックスユーザーが超えることはできません。これを実現する最も簡単な方法を教えてください。 ASP.Netで使用できるようなwinformプロジェクトのフィールド検証コントロールが表示されません。注意してください、私は.net 3.5に取り組んでいます。現在、メッセージボックスを使用してこれをユーザーに伝えています。つまり、ユーザーが計算を押すたびに、現在空の必須フィールドの名前を示すメッセージボックスを表示します。

6
R.S.K

私はあなたと同じ状況に遭遇し、簡単な解決策を見つけました、またはあなたはWinFormsで利用できるその簡単な解決策を言うことができます。 WinFormsにはコントロールが含まれています ErrorProvider これにより、必須フィールドでエラーを表示しやすくなります。

方法:フォーム検証のエラーアイコンを表示する は簡単な紹介です。

ErrorProviderは、好きなように使用できます。テキストボックスの場合は、TextChangedイベントハンドラーや他のボタンのイベントの中で使用できます。

if (!int.TryParse(strNumber, out result))
{
    errorProvider.SetError(tbNumber, "Only Integers are allowed");
}
else
{
    errorProvider.Clear();
}
11
Zeeshan Ajmal

あなたはこれを試すことができます:

private void Calculate_button_Click(object sender, EventArgs e)
{
    RadioButton[] newRadioButtons = { radiobutton1, radiobutton2, radiobutton3 };
    for (int inti = 0; inti < newRadioButtons.Length; inti++)
    {
        if (newRadioButton[inti].Checked == false)
        {
            MessageBox.Show("Please check the radio button");
            newRadioButtons[inti].Focus();
            return;
        }
    }
    TextBox[] newTextBox = { txtbox1, txtbox2, txtbox3, txtbox4, txtbox5 };
    for (int inti = 0; inti < newRadioButtons.Length; inti++)
    {
        if (newTextBox[inti].text == string.Empty)
        {
            MessageBox.Show("Please fill the text box");
            newTextBox[inti].Focus();
            return;
        }
    }
}

コントロールをループして、コントロールが満たされているかどうかを確認できます。満たされていない場合は、メッセージボックスに表示され、特定のコントロールがフォーカスされます。

4
gabriel prakash

すべてのカスタム検証を実装する最も簡単な方法は、ボタンクリックイベント内に一連のif条件を設定することです。

private void Calculate_button_Click(object sender, EventArgs e)
{
    if(textBox1.Text == string.Empty)
    {
        MessageBox.Show("Please enter a value to textBox1!");
        return;
    }
    else if(!radioButton1.Checked && !radioButton2.Checked)
    {
        MessageBox.Show("Please check one radio button!");
        return;
    }
    else if(comboBox1.SelectedIndex == -1)
    {
        MessageBox.Show("Please select a value from comboBox!");
        return;
    }
    else
    {
        // Program logic...
    }
}

同様に、範囲も確認できます。

4
CRoshanLG

コントロールのValidatingイベントを使用して、必要な検証をコーディングします。

次の例は、ValidateEmail関数を使用して、テキストが電子メールアドレスであるかどうかを確認し、一致しない場合は背景を一部の(赤?)色に設定し、一致するまでユーザーがコントロールを終了できないようにします。

Private Sub VoucherEmail_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles Textbox.Validating
    If Not ValidateEmail(sender.Text) Then
        sender.backcolour = Validation.ErrorBackgrounColor
        e.Cancel = True
    End If
End Sub
0
pkoszka

これは古いスレッドです。

しかし、私は答える価値があると思います。

計算ボタンクリック関数に追加

if(!this.ValidateChildren())
            {
                return;
            }

検証関数を追加します

編集する

申し訳ありませんが、これは.NET 4.0以降で機能します

0
haxpak