今天測試同事寫的一個程序,在沒有選中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 }
就可以了。
