我在表单加载事件中编写了以下代码。当表单被加载时,可用的串口被添加到组合框中。
String[] ports = SerialPort.GetPortNames();
private void Form1_Load(object sender, EventArgs e)
{
_serialPort = new SerialPort();
foreach (string port in ports)
{
cbox.Items.Add(port);
}
}
在下一步中,在组合框中 selectedindex_changed 事件中,当更改端口时,端口详细信息会在多行文本框中更新。
private void cbox_SelectedIndexChanged(object sender, EventArgs e)
{
using (var searcher = new ManagementObjectSearcher("SELECT * FROM WIN32_SerialPort"))
{
var prts = searcher.Get().Cast<ManagementBaseObject>().ToList();
var tList = (from n in ports
join p in prts on n equals p["DeviceID"].ToString()
select n + " - " + p["Caption"]).ToList();
foreach (string s in tList)
{
mtxt.AppendText(s); // multiline textbox
}
}
}
例如:在这个程序中,端口被添加到从(COM3 到 comX)的组合框中。但我的问题是无论我选择什么端口,它只返回组合框中第一个端口的详细信息(即它只返回 COM3 的详细信息)。请任何人帮助我获取我在组合框中选择的端口的详细信息。