使用文本框数据检查radiobutton

时间:2013-07-24 13:09:20

标签: c# winforms radio-button

我有一个文本框,可以从数据库中获取性别值。根据textchanged事件,radiobuttons会做出相应的响应。

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

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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",则不检查任何内容。