2017-04-13 39 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); 
     } 
    } 
相关问题