我在检查组合框时遇到了麻烦。
基本上在Form加载时,代码将检查组合框中的字符串,当它找到一个字符串时,它会将字符串拆分为单独的值,然后解析数据库以获取所需的信息。
我想我有我需要的代码,但它不起作用
以下是代码:
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语句检查没有字符串值。
任何帮助都会受到极大的赞赏
答案 0 :(得分:1)
您正在引用一个索引的项目,该索引在Split();
调用返回的数组中不存在:
input.Split(' ')[1].Replace(",", "");
输入字符串可能没有空格,例如:
计算器
我还要确保在拆分之前有一些文字可供使用:
if(!string.IsNullOrWhiteSpace(cboSelectEmp.Text.Trim())
{
string formFirstNameValue = input.Split(' ')[0];
string formLastNameValue = input.Split(' ')[1].Replace(",", "");
//...
}
答案 1 :(得分:0)
使用此代码:
private void cboSelectEmp_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboSelectEmp.SelectedIndex >= 0)
{
SelectEmployeeInfo();
}
}
private void SelectEmployeeInfo()
{
if (!string.IsNullOrWhiteSpace(cboSelectEmp.Text.Trim()))
{
string input = cboSelectEmp.Text.Trim();
if (input.Split(' ').Length > 1)
{
string formFirstNameValue = input.Split(' ')[0];
txtFirstName.Text = formFirstNameValue;
string formLastNameValue = input.Split(' ')[1].Replace(",", "");
txtLastName.Text = formLastNameValue;
}
}
}
不会抛出异常