我想将我的组合框中所选项目的值设置为变量(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;
}
答案 0 :(得分:1)
问题在于,您使用字符串填充ComboBox,而不是使用实际的Person对象。当然,此字符串无法直接转换回对象,因此您的转换失败,personSearch
已分配给null
。
要解决此问题,您需要:
Person
对象填充ComboBox。确保ComboBox.ValueMemeber
为空。Person
类中定义某些属性,例如Text
并为其设置DisplayMember
或覆盖ToString
以控制CombobBox中的条目在UI上的显示方式