2017-04-13 12 views
-1

私は開いているシリアルポートを確認しようとしていますが、それをコンボボックスから削除しようとしていますが、ポートが閉じていてもコンボボックスのドロップダウンをクリックするとライン上で例外が発生します。なぜこれが起こるのですか?助けてください!ここに私のコードです。例外は、 '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

OK、私は今それを得たと思います。ここに実際のコードがあり、それは何をすべきかをします。 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); 
     } 
    } 
関連する問題