2

データベースから性別の値を取得するテキスト ボックスがあります。textchanged イベントに基づいて、それに応じてラジオボタンが応答します。

private void txtInvisibleGender_TextChanged(object sender, EventArgs e)
{
    if (txtInvisibleGender.Text == "Female")
        rbFemale.Checked = true;
    else
        rbMale.Checked = true;
}

問題は、テキストボックスのデータが女性の場合、男性のラジオボタンがチェックされているのはなぜですか? テキストボックスのデータに基づいてチェックしません。どうすればこれを機能させることができますか?

4

2 に答える 2

2

あなたfalse branchの状態は決してないので、あなたは常に実行していますtrue

if (txtInvisibleGender.Text == "Female")
    rbFemale.Checked = true;
else
    rbMale.Checked = true; // we are reaching here.

に変更することをお勧めします

if (txtInvisibleGender.Text.Trim().ToLower().Contains("female"))
    rbFemale.Checked = true;
else
    rbMale.Checked = true; 

が含まれていないif-elseすべての状況で、 は男性をチェックすることに注意してください。したがって、入力すると男性がチェックされます。txtInvisibleGender"female""foobar"

私はそれを次のように変更します:

// "female" contains "male" so Contains() cannot be used!
if (txtInvisibleGender.Text.Trim().ToLower().Equals("female"))
    rbFemale.Checked = true;

if (txtInvisibleGender.Text.Trim().ToLower().Equals("male"))
    rbMale.Checked = true;

それ以外の場合、"male"または何"female"もチェックしません。

于 2013-07-24T13:11:31.107 に答える