删除的条目不会在C#中的Listbox控件中更新

本文关键字:Listbox 中的 控件 更新 删除 | 更新日期: 2023-09-27 18:00:20

我在Windows窗体中有一个listbox控件,用于显示连接的串行设备的通信响应。当我希望清除listbox(称为Listbox1)中的条目时,我使用以下代码:

Listbox1.Items.Clear();

然而,尽管上面的代码可以完美地删除前8个响应的条目,但Listbox1中的后续条目似乎无法通过调用上面的代码来删除。更奇怪的是,每次在Listbox1中输入新的代码行时,Listbox1.Items.Count都会返回1,尽管我可以在Listbox1中看到以前的条目,所以如果我尝试使用Listbox1.SetSelected(1, true);,我会收到以下错误消息:

InvalidArgument=Value of '1' is not valid for 'index'

这意味着Listbox1中只有一个项目,尽管我可以很清楚地看到Listbox1中的两个项目(据称已删除的旧项目和最近的项目)。

请告知这里可能出了什么问题。为什么即使调用了Listbox1.Items.Clear()Listbox1中仍会反映条目?如何删除Listbox1中的所有条目而不看到以前响应中留下的任何零散项目?

删除的条目不会在C#中的Listbox控件中更新

找到了解决方案-串行设备需要更长的时间间隔来响应某些命令(与其他命令相反),因此必须使用可变时序(某些命令的延迟更长,其他命令的延迟更短)。利用类似的短延迟时间(100ms)会导致接收到的数据包拥塞,并导致一些条目被中继到Listbox1中,即使在调用(并假定执行)Listbox1.Items.Clear();命令之后,也会导致在Listbox1中输入杂散(假定"删除")响应。