2017-04-13 96 views
-1

我試圖檢查一個開放的串行端口,將其從comboBox中刪除它,但是當我單擊comboBox下拉列表時,即使端口已關閉,我在線路上檢查到打開串行端口的異常。爲什麼會發生?請幫忙!這是我的代碼。異常說:發生了'System.NullReferenceException'。如果if條件爲真,則當serialport1打開時,則沒有例外。爲什麼?!爲什麼在檢查打開的串行端口時會出現異常?

private void comboBox9_DropDown(object sender, EventArgs e) 
    { 
     //Load Com Port List into comboBoxes when dropdown. Holds list actual 
     comboBox9.Items.Clear(); 
     string[] portNames = SerialPort.GetPortNames();  //<-- Reads all available comPorts 
     foreach (var portName in portNames) 
     { 
      comboBox9.Items.Add(portName); 

      //Removes comboBox entry if port is Open 
      if (_serialPort1.IsOpen) 
      { 
       comboBox9.Items.Remove(_serialPort1.PortName); 
      } 

     }   
    } 

回答

0

好的,我想我現在明白了。這是實際的代碼,它做它應該做的事情。 它刷新comboBox條目並從列表中刪除打開的端口。

private void comboBox9_DropDown(object sender, EventArgs e) 
    { 
     comboBox9.Items.Clear(); 
     string[] portNames = SerialPort.GetPortNames();  //<-- Reads all available comPorts 
     foreach (var portName in portNames) 
     { 
      comboBox9.Items.Add(portName); 
     } 
     if (_serialPort1 != null && _serialPort1.IsOpen) 
     { 
      comboBox9.Items.Remove(_serialPort1.PortName); 
     } 
    } 
相關問題