Comboboxes的问题

时间:2013-12-16 09:38:02

标签: c# .net database winforms combobox

我在检查组合框时遇到了麻烦。

基本上在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语句检查没有字符串值。

任何帮助都会受到极大的赞赏

2 个答案:

答案 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;
            }

        }

    }

不会抛出异常