在c sharp 双赢的形式
我在表单中添加了一个组合框控件 并相应地将项目添加到组合框中 m尝试select-index上的项目被分配给一个字符串,该字符串作为参数传递给以下列方式声明的函数:
private void cmbPayment_SelectedIndexChanged(object sender, EventArgs e)
{
string pm = cmbLocation.SelectedItem.ToString();
payment(pm);
}
功能:
public void payment(string pym)
{
jd.PaymentMode = pym;
}
答案 0 :(得分:7)
在我看来,“cmbLocation”应该是“cmbPayment”?
答案 1 :(得分:2)
看起来cmbLocation上没有选择任何项目。如果没有选择任何项,则SelectedItem属性将为null,并且您无法在null上调用toString。
你的意思是cmbLocation还是cmbPayment?因为这发生在cmbPayment事件中。
一种解决方法是检查是否为空:
private void cmbPayment_SelectedIndexChanged(object sender, EventArgs e)
{
if(!cmbPayment.SelectedItem == null)
{
string pm = cmbLocation.SelectedItem.ToString();
payment(pm);
}
}
无论如何,这是一种很好的做法,可以防止NullPointerExceptions。
答案 2 :(得分:1)
未选择任何内容时会发生这种情况。
然而,正如其他人所建议的,看起来你指的是错误的组合框,所以即使cmdPayment可能有一个选定的项目,你也不是指它。你写过cmbLocation
答案 3 :(得分:0)
您正在cmbLocation的SelectedItem属性上调用方法(ToString())。如果SelectedItem为null / Nothing(或cmbLocation为null / Nothing),那么您将获得NullReferenceException
答案 4 :(得分:0)
正如其他人所说,看起来你正在查看错误控件上的SelectedItem
。
值得思考一下如何解决这个问题:
在调试时,您应该能够看到什么是null,大概是SelectedItem
?
值得注意的是,您可以查看sender
对象,它是引发事件的控件。
在调试器中,您可以查看并比较选择,看到cmbLocation
与sender
相比可能已经慢慢实现。