什么是我的Combobox SelectedIndexChanged错误?

时间:2014-02-07 12:31:41

标签: c# sqlite combobox listbox

我想将我的组合框中所选项目的值设置为变量(person),以便我可以将人员值与sqlite数据库中的值进行比较。这是我的代码:

private void cboSelectClient_SelectedIndexChanged(object sender, EventArgs e)
{
    string str;
    personSearch = new Person();
    selectedPersonList = new List<Person>();

我的问题出现在下一行,它应该将我的人物变量项目设置为与组合框中的项目相等。

    personSearch = cboSelectClient.SelectedItem as Person;

   _pBl.PopulateSelectedPersonList(personSearch, ref selectedPersonList);  

   foreach (Person person in selectedPersonList)
   {
       txtAge.Text = Convert.ToString(person.Age);
       txtEmail.Text = person.Email;
       txtFirstName.Text = person.FirstName;
       txtID.Text = Convert.ToString(person.ID);
       txtLastName.Text = person.LastName;

       lstItemsAdded.Items.Add(person.Item);
   }      
}

这就是我填充组合框的方式:

foreach (Person PersonItem in _listAllData)
{
     if (PersonItem.FirstName != equalPerson.FirstName) //Add name en add  nie die name wat klaar in is nie... VIND UIT HOE OM NET N SEKERE DEEL TE ADD..
     {
         cboSelectClient.Items.Add(PersonItem.ID +" : "
            + PersonItem.FirstName + " " 
            + PersonItem.LastName + " " 
            + PersonItem.Age + " " 
            + PersonItem.Email + " " 
            + PersonItem.Item.ItemCode 
            + " " + PersonItem.Item.ItemDescription 
            + " " + PersonItem.Item.ItemName + " " 
            + PersonItem.Item.ItemPrice);

      }

      equalPerson = PersonItem;
}

1 个答案:

答案 0 :(得分:1)

问题在于,您使用字符串填充ComboBox,而不是使用实际的Person对象。当然,此字符串无法直接转换回对象,因此您的转换失败,personSearch已分配给null

要解决此问题,您需要:

  1. 使用实际的Person对象填充ComboBox。确保ComboBox.ValueMemeber为空。
  2. Person类中定义某些属性,例如Text并为其设置DisplayMember或覆盖ToString以控制CombobBox中的条目在UI上的显示方式
相关问题