C#中的列表框控件中未更新已删除的条目

时间:2015-06-29 05:06:17

标签: c# winforms listbox

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

Listbox1.Items.Clear();

然而,似乎虽然上述代码在删除前8个响应的条目时效果很好,但Listbox1中的后续条目不能通过调用上述代码来删除。更奇怪的是,Listbox1.Items.Count每次在1中输入新的代码行时都返回Listbox1,即使我可以在Listbox1中看到之前的条目,所以如果我尝试使用Listbox1.SetSelected(1, true);,收到以下错误消息:

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

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

请告知这里可能出现的问题。为什么即使在调用Listbox1之后仍有Listbox1.Items.Clear()中仍有条目?如何清除Listbox1中的所有条目,而不会看到上一个响应中遗留的任何杂散项目?

1 个答案:

答案 0 :(得分:0)

找到解决方案 - 串行设备需要更长的时间间隔来响应某些命令(而不是其他命令),因此必须使用可变时序(某些命令的延迟较长,而其他命令的延迟较短)。利用类似的短延迟时间(100ms)导致接收到的数据包拥塞,并且即使在调用Listbox1命令(并且据称执行)之后,也会将某些条目中继到Listbox1.Items.Clear();,从而导致在Listbox1中输入的迷路(假设为'已删除')回复。