0

5つの検証要素を含む検証方法があります。そのうちの4つは意図したとおりに機能しますが、1つは機能しません。質問はなぜですか?

私が抱えている問題は、「CompetitionCourse」の検証にあります。コンボボックスcbCourseRound1が空白でない場合にのみ、IsValidをtrueにします。現時点では、このコンボボックスが空白または入力されているかどうかに関係なく、これは検証中です。他のすべての検証は機能していますが、

private bool Validate(Competition compSetup)
        {
            string CompetitionName = compSetup._CompetitionName;
            int CompetitionFormat = compSetup._CompetitionFormatId;
            string CompetitionGender = cbGenderOfCompetiton.Text;
            string CompetitionMarker = cbMarker.Text;
            string CompetitionCourse = cbCourseRound1.Text;

            if (!CompetitionName.Equals(string.Empty) && !CompetitionGender.Equals("Mixed") && CompetitionFormat.Equals(1) && !CompetitionCourse.Equals(string.Empty) &&
                ((CompetitionGender.Equals("Female") && CompetitionMarker.Equals("Red")) || (!CompetitionGender.Equals("Female") && !CompetitionMarker.Equals("Red"))))
            {
                IsValid = true;
            }
            else
            {
                IsValid = false;
            }
            return IsValid;
        }
4

6 に答える 6

1

何が入っているかによりますCompetitionCourse。コードをデバッグして、自分で確認する必要があります。

CompetitionCourseComboBoxテキストフィールドが空白の場合は、が含まれていることを明示的に確認することをおnull勧めします( ""が含まれていると思われるため)。

CompetitionCourse = (string.IsNullOrEmpty(cbCourseRound1.Text)) ? null : cbCourseRound1.Text;
于 2013-02-04T12:53:52.843 に答える
0

現時点では、このコンボボックスが空白または入力されているかどうかに関係なく、これは検証中です。

プロパティのようなものではなく、コンボボックスのItemsプロパティを確認してくださいText

cbCourseRound1.Items != null && cbCourseRound1.Items.Count > 0
于 2013-02-04T12:49:33.110 に答える
0

まず第一に、.Equals文字列の使用は非常にJavaです。C#には演算子のオーバーロードがあり、見栄えがよくなります。

if(CompetitionName!="" && CompetitionGender!="Mixed" ...)

テスト自体については、ブレークポイントを設定し、`CompetitionCourseの内容を確認する必要があります。私の推測では、それは空の文字列ではなく、いくつかのスペースが含まれています。使ってみてください

...!CompetitionCourse.Trim()!=""
于 2013-02-04T12:50:09.723 に答える
0

あなたのコードは読みにくいです、私はそれを単純化しようとします:

private bool Validate(Competition compSetup)
{
    bool isValid = cbGenderOfCompetiton.Text != "Female" && cbMarker.Text == "Red";
    if (!isValid)
    {
        isValid = !string.IsNullOrEmpty(compSetup._CompetitionName);
        if (isValid)
            isValid = compSetup._CompetitionFormatId.Text == "Female";// this is redundant: cbGenderOfCompetiton.Text != "Mixed";
        if (isValid)
            isValid = CompetitionFormat == 1;
        if (isValid)
            isValid = cbCourseRound1.SelectedIndex != -1;
        if (isValid)
            isValid = cbMarker.Text == "Red"; 
    }
    return isValid;
}

エラーが発生しにくいため、SelectedIndex代わりにを使用したことに注意してください。Combobox.Text

于 2013-02-04T13:03:19.153 に答える
0

!Equalsを使用する代わりに、IsNullOrWhitespaceまたはIsNullOrEmptyを使用します。それはうまくいきます。

于 2013-02-04T13:18:36.663 に答える
0

テキストボックスの周りの空白を削除してみてください。例えば、txtName.Trim();

于 2013-02-04T15:55:52.453 に答える