今天测试同事写的一个程序,在没有选中ListBox值的时候,判断SelectedItem.Text是否为空,总是报错“服务器错误,未将对象引用设置到对象的实例”。一般这种问题的原因都是控件的值为空,调用时出现异常。
他的代码是这样写的:
501 private void btn_Ok_Click(object sender, System.EventArgs e) {
502 if (ListBox_DeviceCell.Items.Count > 0) {
503 if (ListBox_DeviceCell.SelectedItem.Text != string.Empty)
504 {
505 textDeviceCell.Text = ListBox_DeviceCell.SelectedItem.Text;
506 Hidden_Dev_Kind_ID.Value = ListBox_DeviceCell.SelectedValue.ToString();
507 Panel_RecordInfo.Visible = false;
508 }
509 }
510 }
乍看起来没什么错误,但是一旦没有选择ListBox的值,就会报错。原因很简单,就是因为 ListBox_DeviceCell.SelectedItem.Text 是空值所以报错,但是应该怎么样判断出来 ListBox_DeviceCell.SelectedItem.Text 是空值呢?
正确的方法应该是:
501 private void btn_Ok_Click(object sender, System.EventArgs e) {
502 if (ListBox_DeviceCell.Items.Count > 0) {
503 if (ListBox_DeviceCell.SelectedItem != null)
504 {
505 textDeviceCell.Text = ListBox_DeviceCell.SelectedItem.Text;
506 Hidden_Dev_Kind_ID.Value = ListBox_DeviceCell.SelectedValue.ToString();
507 Panel_RecordInfo.Visible = false;
508 }
509 }
510 }
就可以了。