我有一个文本框,可以从数据库中获取性别值。根据textchanged事件,radiobuttons会做出相应的响应。
private void txtInvisibleGender_TextChanged(object sender, EventArgs e)
{
if (txtInvisibleGender.Text == "Female")
rbFemale.Checked = true;
else
rbMale.Checked = true;
}
问题是,当文本框中的数据是女性时,为什么要检查男性无线电按钮?它不会根据文本框中的数据进行检查。我如何使这项工作?
答案 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"
,则不检查任何内容。