C# 组合框的问题

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

我在检查组合框时遇到问题

基本上,在表单加载时,代码将检查combobox中的字符串,当它找到一个字符串时,它会将字符串拆分为单独的值,然后解析数据库中所需的信息

我想我有我需要的代码,但它不工作

代码如下:

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

        }

    }