フォーム読み込みイベントに次のコードを記述しました。フォームがロードされると、利用可能なシリアルポートがコンボボックスに追加されます。
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の詳細のみを返します).Plsは、コンボボックスで選択したポートの詳細を取得するのに役立ちます.