C#-Visual Studio无法在IF语句后清除文本框
我正在做一个非常简单的程序。执行搜索后需要一些帮助来清除文本框。我使用了C#-Visual Studio无法在IF语句后清除文本框,c#,textbox,C#,Textbox,我正在做一个非常简单的程序。执行搜索后需要一些帮助来清除文本框。我使用了cboPrograms.Text=string.Empty但我一定是放错地方了。在我选择一个选项后,它将不清晰 private void cboPrograms_SelectedIndexChanged(object sender, EventArgs e) { if (cboPrograms.Text == "MFValidation") { System.
cboPrograms.Text=string.Empty代码>但我一定是放错地方了。在我选择一个选项后,它将不清晰
private void cboPrograms_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboPrograms.Text == "MFValidation")
{
System.Diagnostics.Process.Start("C:\\Program Files (x86)\\Mozilla\\Mozilla.exe");
}
else if (cboPrograms.Text == "Add/Remove Programs")
{
System.Diagnostics.Process.Start("C:\\Program Files\\AddRemove\\addremove.exe");
cboPrograms.Text = string.Empty;
}
{
cboPrograms.Text = string.Empty;
}
}
此代码之前缺少else
语句
{
cboPrograms.Text = string.Empty;
}
这是因为CBO程序不是一个文本框,而是一个组合框。(文本框中没有SelectedIndexChanged
事件。)
要清除组合框,请执行以下操作:
cboPrograms.SelectedIdex = -1;
此外,阅读组合框的文本不是一个好的做法。您应该有一个绑定到组合框的对象集合。通过调用SelectedItem
然后使用对象的属性来获取所选对象。您看到的文本应该只是对象的文本表示。有关更多信息,请参阅。为什么?如果您添加else
它将减少清理文本框的次数。。。它应该一直都在发生。。。最有可能的是,OP在一个Start
调用中出现异常,而该代码根本就没有执行过……那么它就不应该有cboPrograms.Text=string.Empty在的else if
中使用code>,也不需要花括号。事实上,我并不是说你的建议是错误的,但它不会改变OP样本的行为。很难说目的是一直清除文本框,还是除了查看代码的第一选择。。。请注意,对于在代码中使用魔法值(如“MFValidation”
)的人来说,坚持干代码或删除不必要的代码可能不是主要考虑的问题,因此复制可能是半故意的。我明白你的意思。我认为这个问题是错误的或不完整的。“文本框”实际上是指“组合框”。。。但是它仍然没有解释行为OP sees-:“将Text属性设置为null或空字符串(“”)将SelectedIndex设置为-1”@AlexeiLevenkov:Hmm。我尝试用string.empty
重置组合框,但在类文档中没有提到您正在描述的行为。事实上,如果它真的这样做了,那么OP应该在一个无限循环中结束,因为组合框的索引将从处理程序中更改。我想您正在查看WPF one,而我假设OP使用WinForms。。。很有可能你是对的,所以+1。