我在Windows窗體中有一個listbox
控件,用於顯示連接的串行設備的通信響應。當我想以清除listbox
(稱爲Listbox1
)的條目,我使用下面的代碼:刪除的條目不在C#中的列表框控件中更新
Listbox1.Items.Clear();
然而,似乎是,雖然上面的代碼工作完美地去除條目的第8個反應,隨後通過調用上述代碼,Listbox1
中的條目不可移除。更奇怪的是,每個在Listbox1
輸入新的代碼行的時候,即使我可以看看以前的條目Listbox1
,所以如果我嘗試使用Listbox1.SetSelected(1, true);
,我收到以下錯誤消息Listbox1.Items.Count
回報1
:
InvalidArgument=Value of '1' is not valid for 'index'
這意味着在Listbox1
中只有1個項目,但我可以很清楚地看到Listbox1
(據稱刪除的舊條目和更新的條目)中的2個項目。
請告知這裏可能會出現什麼問題。即使在撥打Listbox1.Items.Clear()
之後,爲什麼仍有條目反映在Listbox1
?如何清除Listbox1
中的所有條目而不會看到前一個回覆留下的任何零散項目?
聽起來像一個可能的**多線程**問題?你使用任何線程?如何以及何時更新列表框?...以及如何以及何時讀取其中的項目數量? –
@Idle_Mind:是的,我在一個異步線程(這是一個與按鈕相關的點擊事件處理程序)內調用「Listbox1」的更新,並且「Listbox1」正在通過單獨的線程進行更新(該線程處理串行通訊)。 –
...並正在更新/讀取正確調用到主UI線程?你多久更新一次UI? –