【发布时间】:2013-12-16 09:38:01
【问题描述】:
我在检查组合框时遇到问题。
基本上在表单加载时,代码会检查组合框是否有字符串,当找到一个字符串时,会将字符串拆分为单独的值,然后解析数据库以获取所需信息。
我想我有我需要的代码,但它不起作用
代码如下:
private void cboSelectEmp_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboSelectEmp.Text != string.Empty && cboSelectEmp.Text != "")
{
SelectEmployeeInfo();
}
else
{
MessageBox.Show("");
}
}
private void SelectEmployeeInfo()
{
string input = cboSelectEmp.Text.Trim();
string formFirstNameValue = input.Split(' ')[0];
string formLastNameValue = input.Split(' ')[1].Replace(",", "");
txtFirstName.Text = formFirstNameValue;
txtLastName.Text = formLastNameValue;
}
当表单加载时此代码执行并在该行抛出错误:
string formLastNameValue = input.Split(' ')[1].Replace(",", "");
**EmployeeTracker.exe 中出现“System.IndexOutOfRangeException”类型的异常,但未在用户代码中处理
附加信息:索引超出了数组的范围。**
我不知道我做错了什么,表单加载了 combobox.SelectedIndex = -1 并且 if 语句检查没有字符串值。
任何帮助将不胜感激
【问题讨论】:
-
您的数组包含的元素少于两个,因此在索引 1 处没有可供查找的元素。当您到达那条线时,
input的值是多少?此外,您可以使用String.IsNullOrEmpty来简化您的空字符串检查。 -
您好,输入字符串的格式始终为 FirstName LastName, (Position) EG - John Doe, (Manager)
-
这就是您所期望的,而不是实际的,否则您将不会收到该错误。听起来当 SelectedIndex 为 -1 时您会收到此错误,如果是这种情况,请在您的 SelectedIndexChanged 方法中添加一个检查,并且当 SelectedIndex SelectEmployeeInfo。
-
throws EmployeeTracker.exe 中发生了“System.IndexOutOfRangeException”类型的异常,但未在用户代码中处理其他信息:索引超出了数组的范围。
标签: c# .net database winforms combobox