[英]System.InvalidCastException: 'Unable to cast object
试图在组合框(下拉列表)中获取所选对象的值得到此错误:
System.InvalidCastException:'无法转换类型的对象
“ System.Collections.Generic.KeyValuePair`2 [System.String,schoolstuff.Employee]”键入“ schoolstuff.Employee”。
我试图为cboEmployees.SelectedItem找到一个“值”,但似乎没有任何值。
employees[employee.Name] = employee;
cboEmployees.DataSource = new BindingSource(employees, null);
cboEmployees.DisplayMember = "Key";
cboEmployees.ValueMember = "Value";
private void cboEmployees_SelectedIndexChanged(object sender, EventArgs e)
{
if (cboEmployees.SelectedItem == null) return;
var employee = (Employee)cboEmployees.SelectedItem;
if(employee != null)
txtName.Text = employee.Name;
}
cboEmployees.SelectedItem
是一个KeyvaluePair<K,V>
。
因此,您不能像这样进行转换: (Employee)cboEmployees.SelectedItem
这应该起作用:
var employee = ((KeyValuePair<string,Employee>)cboEmployees.SelectedItem).Value;
或者,您可以改用SelectedValue:
if (cboEmployees.SelectedValue == null) return;
var employee = (Employee)cboEmployees.SelectedValue;
您的SelectedItem
不是Employee
。
要么使用SelectedValue
var employee = (Employee)cboEmployees.SelectedValue;
或强制转换为KeyValuePair<string, Employee>
var kvp = (KeyValuePair<string, Employee>)cboEmployees.SelectedItem;
var employee = kvp.Value;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.