簡體   English   中英

Winform 上的文本框不顯示我的數據 C#

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM