C# 组合框的问题
我在检查组合框时遇到问题 基本上,在表单加载时,代码将检查combobox中的字符串,当它找到一个字符串时,它会将字符串拆分为单独的值,然后解析数据库中所需的信息 我想我有我需要的代码,但它不工作 代码如下:C# 组合框的问题,c#,.net,database,winforms,combobox,C#,.net,Database,Winforms,Combobox,我在检查组合框时遇到问题 基本上,在表单加载时,代码将检查combobox中的字符串,当它找到一个字符串时,它会将字符串拆分为单独的值,然后解析数据库中所需的信息 我想我有我需要的代码,但它不工作 代码如下: private void cboSelectEmp_SelectedIndexChanged(object sender, EventArgs e) { if (cboSelectEmp.Text != string.Empty && cboSel
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语句检查没有字符串值
非常感谢您提供的任何帮助您引用的索引项在调用
Split()返回的数组中不存在代码>:
很可能输入字符串中没有空格,例如:
堆栈溢出
我还要确保您在拆分之前有一些文本要处理:
if(!string.IsNullOrWhiteSpace(cboSelectEmp.Text.Trim())
{
string formFirstNameValue = input.Split(' ')[0];
string formLastNameValue = input.Split(' ')[1].Replace(",", "");
//...
}
使用此代码:
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;
}
}
}
不会引发异常您的数组包含的元素少于两个,因此索引1中没有可供查找的元素。到达该行时,input
的值是多少?此外,您还可以使用String.IsNullOrEmpty
简化空字符串检查。您好,输入字符串的格式始终为FirstName LastName,(Position)例如-John Doe,(Manager)这是您期望的格式,而不是实际的格式,否则您将不会得到该错误。当SelectedIndex为-1时,听起来好像出现了此错误,如果是这种情况,请在SelectedIndexChanged方法中添加一个检查,当SelectedIndex<0.引发EmployeeTracker.exe中出现“System.IndexOutoforAngeException”类型的异常,但未在用户代码中处理时,不要调用SelectEmployeeInfo
。其他信息:索引超出数组的边界。您好,输入字符串的格式始终为FirstName LastName,(位置)加载表单时,组合框的选定索引为-1,这意味着.Text属性将为null或empty@NattyMan0007如果文本为null或空,您也会遇到此错误。在执行拆分之前,您需要检查是否有一些文本,例如:!string.IsNullOrWhiteSpace(“”)
基本上就是我提供的代码,我的答案有问题吗?@NattyMan0007它与您在pastebin上发布的代码相同。。
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;
}
}
}