组合框 C# 的 TextChanged 事件

TextChanged event for combobox C#

基本上,在下面的代码中,我试图遍历数组,如果组合框中的当前文本与数组中的任何内容都不匹配,它将引发错误。但是我无法让它在事件 TextChanged 事件上触发。

非常感谢任何帮助

string[] SRtier1 = { "Option1", "Option2", "Option3", "Option4", "Option5" };        

private void SRcmb_tier1_TextChanged(object sender, EventArgs e)
    {
        //Loop SRtier1 Array to ComboBox
        for (int i = 0; i < SRtier1.Length; i++)
        {
            if (SRcmb_tier1.Text != SRtier1[i])
            {
                MessageBox.Show("Please select one of the options provided.");
            }
        }
    }

如果您在 TextChanged

中有任何内容,请在事件中检查属性 window

首先,您错误的循环实现:在您的代码中您急于触发消息 SRtier1.Length 次,您想要的可能是检查输入并触发消息一次:

private void SRcmb_tier1_TextChanged(object sender, EventArgs e)
{
    Boolean found = false;

    for (int i = 0; i < SRtier1.Length; i++)
    {
        if (SRcmb_tier1.Text == SRtier1[i])
        {
            found = true;
            break;
        }
    }

    if (!found)
       MessageBox.Show("Please select one of the options provided.");
}

更好的解决方案是使用 Linq:

   private void SRcmb_tier1_TextChanged(object sender, EventArgs e) {
     if (!SRtier1.Any(item => item == SRcmb_tier1.Text)) 
       MessageBox.Show("Please select one of the options provided.");
   }

最后,检查 SRcmb_tier1_TextChanged 是否被分配给 SRcmb_tier1TextChanged 作为 von v. 在评论中说。