首页 > 解决方案 > C# Listbox 显示重复的 ble 设备

问题描述

当我运行代码并按下“搜索”按钮时,它可以检测到附近的 ble 设备。但是,它显示了许多相同的名称。我该如何解决?

  public Form1()
    {
      items = new List<string>();
      InitializeComponent();
      txtStatus.Text = "Press 'Search' to begin";
      var watcher = new BluetoothLEAdvertisementWatcher();
      watcher.ScanningMode = BluetoothLEScanningMode.Active;

      watcher.Received += OnAdvertisementReceived;
      watcher.Start();
    }

    private void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementReceivedEventArgs eventArgs)
    {
      items.Add(eventArgs.Advertisement.LocalName);
    }

在此处输入图像描述

标签: c#

解决方案


在您的OnAdvertisementReceived函数中,您不会在将其推回之前检查该项目是否已存在于您的列表中。

尝试以下操作:

private void OnAdvertisementReceived(BluetoothLEAdvertisementWatcher watcher, BluetoothLEAdvertisementReceivedEventArgs eventArgs)
{
    //If the list does not already have this name inside of it
    if(items.Contains(eventArgs.Advertisement.LocalName) == false)
    {
        //Add it into the list, because it must be new! (>*3*)>
        items.Add(eventArgs.Advertisement.LocalName);
    }
}

推荐阅读