c# - 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);
}
解决方案
在您的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);
}
}
推荐阅读
- c# - 从 C# 中的字符串中删除背景颜色
- r - docker-compose 的行为不符合 dockerfiles
- javascript - Vue js跟踪范围插槽中选定的复选框
- visual-studio-code - 从 vsix 安装时找不到命令
- react-native - react-native-google-autocomplete 将结果限制为位置和半径
- django - 在 django rest 框架中执行 perform_update 时检查实例的当前值
- excel - 如何根据多个单元格值编写公式进行计算?
- python - 在装饰器的包装器中访问 kwargs 和 args
- ruby-on-rails - 刷新使用 ||= 设置的类实例变量
- protractor - Protractor .sendKeys() 和 browser.executeScript("arguments[0].textContent= arguments[1];", cell, value) 不适用于非输入字段