C#当comboBox自动匹配时 鼠标点击窗体出现 InvalidArgument='0' 不是 'index' 的有效值. 参数名称: index

代码:
private void comBoxModelCus_TextUpdate(object sender, EventArgs e)
{
List<string> listNew = new List<string>();
listNew.Clear();
comBoxModelCus.Items.Clear();
string MODEL = comBoxModelCus.Text.Trim().ToUpper();
foreach (string item in g_initialQuery)
{
if (item.Contains(MODEL))
{
listNew.Add(item);
}
}
comBoxModelCus.SelectionStart = comBoxModelCus.Text.Length;
comBoxModelCus.Items.AddRange(listNew.ToArray());
Cursor = Cursors.Default;
comBoxModelCus.DroppedDown = true;
}
此时故意胡乱输入进行匹配不让其匹配到结果,然后点击窗体空白处就会出现异常!

正常输入匹配的话是可以的,但是不知为何这种情况之下点击空白处就会报此异常,而且也不提示是具体在哪出现此异常,不知哪位打算帮忙提供解决方案、、、(同样自己写了一个测试程式也是一样的结果。

若匹配结果空则添加一个空白项,这样就能阻止报错,猜想是输入结果后控件默认设置text是第一个,但此时没有项,故index无效
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-25
是不是在comBoxModelCus的光标移开事件里加了,类似comBoxModelCus.SelectIndex=0的代码,如果有的话,加个Check条件,判断如果有项目的情况下,再设置SelectIndex。追问

没有哦,只有textUpdate事件,而且我写了一个小程式测试还是一样的结果,你可以自己测试一下,只给一个button1与comboBox1,button1初始化g_initialQuery集合,给comboBox添加同样的事件,会有一样的异常···

第2个回答  2015-08-25
光看贴出来的代码,看不出来原因。其他地方有改变comBoxModelCus下拉项的代码么追问

没有,只有在update事件里有改变,集合g_initialQuery已经初始化好了,可以正常匹配获取Item。如图

但在没有匹配出item时如果鼠标点击窗体的话就会出现异常。

追答

在异常窗体底部,点“异常信息复制到剪贴板”,然后贴出来

追问

未处理 System.ArgumentOutOfRangeException
Message=InvalidArgument='0' 不是 'index' 的有效值。
参数名称: index
Source=System.Windows.Forms
ParamName=index
StackTrace:
於 System.Windows.Forms.ComboBox.Ob、、、

追答

贴的不全,你把关键部分给省略了啊,主要信息都在stacktrace里面呢

追问

已经解决了,thank you!

...InvalidArgument='0' 不是 'index' 的有效值. 参数名称: index...
若匹配结果空则添加一个空白项,这样就能阻止报错,猜想是输入结果后控件默认设置text是第一个,但此时没有项,故index无效

相似回答