使用文本框数据检查单选按钮

本文关键字:检查 单选按钮 数据 文本 | 更新日期: 2023-09-27 18:24:55

我有一个从数据库中获取性别值的文本框。根据文本更改事件,单选按钮会相应地做出响应。

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

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

使用文本框数据检查单选按钮

您应该使用字符串。比较而不是==。

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

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;
}

您的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; 

值得注意的是,在txtInvisibleGender不包含"female"的所有情况下,if-else都将检查雄性。因此,键入"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;

那么如果它是除CCD_ 7或CCD_。