[英]TextBox on Winform not showing my Data C#
我正在創建一個 Windows 表單,它應該在我的 PC 上列出 COM 端口。 我正在嘗試將此數據添加到 ComBox,它將列出/顯示我所有的 COM 端口和每個端口的詳細信息。 這是代碼。
private void cb1_SelectedIndexChanged(object sender, EventArgs e)
{
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE Caption like '%(COM%'"))
{
var portnames = SerialPort.GetPortNames();
var ports = searcher.Get().Cast<ManagementBaseObject>().ToList().Select(p => p["Caption"].ToString());
var portList = portnames.Select(n => n + " - " + ports.FirstOrDefault(s => s.Contains(n))).ToList();
foreach (string s in portList)
{
cb1.Text = s;
}
}
}
此代碼在控制台應用程序中完美運行,它准確顯示了我需要的內容。 但是在 Windows 表格中,它不起作用。 我已經為此搜索了一些可能的解決方案,但沒有一個有效。 我不是這方面的專家,但我相信這個錯誤可能與數據綁定有關,我試圖刪除數據綁定但我不能。
cb1.DataSource = null; 或 cb1.Items.Clear();
這些只是我嘗試過的許多事情中的兩件事,但都沒有奏效。
您目前沒有向 ComboBox 添加任何項目。 查看修改后的代碼。
private void cb1_SelectedIndexChanged(object sender, EventArgs e)
{
using (var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE Caption like '%(COM%'"))
{
var portnames = SerialPort.GetPortNames();
var ports = searcher.Get().Cast<ManagementBaseObject>().ToList().Select(p => p["Caption"].ToString());
var portList = portnames.Select(n => n + " - " + ports.FirstOrDefault(s => s.Contains(n))).ToList();
foreach (string s in portList)
{
cb1.Items.Add(s); //THIS LINE CHANGED
}
}
}
您想將可用的 COM 端口添加到 ComboBox,因此您必須為每個 COM 端口添加一個新項目。 這些項目可以在插入后由用戶選擇。
編輯:要在打開表單時運行代碼,您應該執行以下操作:
public Form1() {
InitializeComponent();
using(var searcher = new ManagementObjectSearcher("SELECT * FROM Win32_PnPEntity WHERE Caption like '%(COM%'")) {
var portnames = SerialPort.GetPortNames();
var ports = searcher.Get().Cast<ManagementBaseObject>().ToList().Select(p => p ["Caption"]
.ToString());
var portList = portnames.Select(n => n + " - " + ports.FirstOrDefault(s => s.Contains(n))).ToList();
foreach (string s in portList) {
cb1.Items.Add(s); // THIS LINE CHANGED
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.