我在顯示可用串行端口的不同TabPages上有一些組合框。我可以在組合框中選擇一個端口並連接到它以獲取數據。現在我想讓comboBoxes隱藏已經在使用的端口。什麼是最好的方式來做到這一點?僅當串口沒有被使用時纔將串口添加到comboBox! C#
這裏是一個組合框的下拉會發生什麼:
string[] portNames = SerialPort.GetPortNames();
comboBox9.Items.Clear();
foreach (var portName in portNames)
{
//checks if combox already contains same Item.
if (!comboBox9.Items.Contains(portNames))
{
comboBox9.Items.Add(portName);
}
}
private void button1_Click(object sender, EventArgs e)
{
//<-- This block ensures that no exceptions happen
if (_serialPort1 != null && _serialPort1.IsOpen)
_serialPort1.Close();
if (_serialPort1 != null)
_serialPort1.Dispose();
//<-- End of Block
if (comboBox2.Text != "")
{
_serialPort1 = new SerialPort(comboBox2.Text, BaudRate, Parity.Even, 7, StopBits.Two); //<-- Creates new SerialPort using the name selected in the combobox
_serialPort1.DataReceived += SerialPortOnDataReceived; //<-- this event happens everytime when new data is received by the ComPort
_serialPort1.Open(); //<-- make the comport listen
button1.Enabled = false;
button2.Enabled = true;
您正在創建組合框的所有項目前的for循環。這會將所有端口添加到組合框。 'SerialPort.GetPortNames()'返回所有的端口(空閒端口和使用端口)? –
是的,它會同時返回免費和正在使用的這些。 –
那麼你如何決定哪一個是免費的,哪一個正在使用? –