今天測(cè)試同事寫(xiě)的一個(gè)程序,在沒(méi)有選中ListBox值的時(shí)候,判斷SelectedItem.Text是否為空,總是報(bào)錯(cuò)“服務(wù)器錯(cuò)誤,未將對(duì)象引用設(shè)置到對(duì)象的實(shí)例”。一般這種問(wèn)題的原因都是控件的值為空,調(diào)用時(shí)出現(xiàn)異常。
他的代碼是這樣寫(xiě)的:
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 }
乍看起來(lái)沒(méi)什么錯(cuò)誤,但是一旦沒(méi)有選擇ListBox的值,就會(huì)報(bào)錯(cuò)。原因很簡(jiǎn)單,就是因?yàn)?ListBox_DeviceCell.SelectedItem.Text 是空值所以報(bào)錯(cuò),但是應(yīng)該怎么樣判斷出來(lái) ListBox_DeviceCell.SelectedItem.Text 是空值呢?
正確的方法應(yīng)該是:
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 }
就可以了。