2

我有一个从数据库中获取性别值的文本框。基于 textchanged 事件,单选按钮做出相应的响应。

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

问题是当文本框中的数据是女性时,为什么要选中男性单选按钮?它不会根据文本框中的数据进行检查。我该如何进行这项工作?

4

2 回答 2

3

您应该使用 string.Compare 而不是 ==。

这意味着您的文本框没有这个值,至少不在同一个大小写中。尝试这个

private void txtInvisibleGender_TextChanged(object sender, EventArgs e)
{
 if(string.Compare(txtInvisibleGender.Text.Trim(), "Female", StringComparison.OrdinalIgnoreCase) == 0)     
    rbFemale.Checked = true;
else
    rbMale.Checked = true;
}
于 2013-07-24T13:14:42.447 回答
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-elsetxtInvisibleGender不包含"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 回答