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。