1

WinFormsのテキストボックスコントロールのテキストを検証する方法は?
「13:55」のように、ユーザーが文字列を入力する必要があるコントロールがあります。この値が「XX:YY」よりも異なる場合は、MessageBoxを表示したいと思います。
どうやってするの?
asp.netでは作成がとても簡単でしたが、winformsに実装するにはどうすればよいですか?

4

4 に答える 4

4

そもそも検証する必要がない場合は、 MaskedTextBoxをチェックしてください。

var l_control = new MaskedTextBox();
l_control.Mask = "00\:00";

最初の桁をオプションにしたい場合:

l_control.Mask = "90\:90";

それ以外の場合は、正規表現を使用できます。コロンで区切られた4桁は次のようになります@"^\d{2}:\d{2}$"。(この@記号は、C#が'\'をエスケープ文字として扱うことを防ぎます-正規表現に固有のものではありません。)

于 2012-10-12T20:07:46.273 に答える
1

http://windowsclient.net/learn/videos.aspxには、プロセス全体を説明する 3 つの検証ビデオがあります。

ただし、収集するデータによっては、Masked Textbox を使用する方が簡単な場合があります。

あなたがしていることについては、本当に安全で、2 つの NumericUpDown コントロールを使用でき、検証をまったく処理する必要はありません。

于 2012-10-12T20:09:58.287 に答える
0

C#正規表現を確認する必要があります

Match match = Regex.Match(input, "^\d\d:\d\d$"));

if (!match.Success) MessageBox.Show("Error");
于 2012-10-12T20:09:21.680 に答える
0

メッセージボックスをポップアップする代わりに、 ErrorProviderを使用することもできます。ErrorProvider クラスの例は msdn にあります。基本的に、検証済みイベントにサブスクライブします

this.nameTextBox1.Validated += nameTextBox1Validated;

次に、値が有効かどうかを確認します

private void nameTextBox1Validated(object sender, EventArgs e) {
    if(isNameValid()) {
        // clear error
        nameErrorProvider.SetError(nameTextBox1, String.Empty);
    }
    else {
        // set some helpful message
        nameErrorProvider.SetError(nameTextBox1, "Invalid value.");
    }
}

private bool isNameValid() {
    // The logic for determining if a value is correct
    return nameTextBox1.Text == "hello";
}

エラープロバイダーは次のように作成できます

ErrorProvider nameErrorProvider = new ErrorProvider();
nameErrorProvider.SetIconAlignment(nameTextBox1, ErrorIconAlignment.MiddleRight);
nameErrorProvider.SetIconPadding(nameTextBox1, 2);
nameErrorProvider.BlinkRate = 1000;
nameErrorProvider.BlinkStyle = ErrorBlinkStyle.AlwaysBlink;
于 2012-10-12T20:43:45.380 に答える