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