我有一個帶有單詞的 ListBox,我需要單擊一個按鈕來打開一個 InputBox,我可以在其中搜索一個單詞,程式將運行 ListBox 并突出顯示我在 InputBox 中寫的單詞(如果它在那里)。如果程式到達串列的末尾并且沒有找到該詞,那么我將收到一個 MessageBox,說明我正在尋找的詞不存在。我需要為這個程式使用某種回圈。
我知道如何制作按鈕、輸入框和錯誤訊息框,但我不知道如何進行搜索和回圈。
我在這里閱讀了很多類似的問題,但我認為它們中的任何一個都不會回傳我正在尋找的結果。
誰能幫我?或者將我重定向到帶有答案的帖子?
這是針對 Winform 的。
uj5u.com熱心網友回復:
這應該讓你走上正軌,它幾乎是不言自明的:
- 每當文本更改時
- 在串列中查找匹配項
- 選擇他們

代碼:
private void textBox1_TextChanged(object sender, EventArgs e)
{
var textBox = sender as TextBox ?? throw new InvalidOperationException();
var text = textBox.Text;
if (string.IsNullOrWhiteSpace(text))
return; // nothing to search for
const StringComparison comparison = StringComparison.InvariantCultureIgnoreCase; // maybe change this
// find items matching text
var indices = new List<int>();
for (var i = 0; i < listBox1.Items.Count; i )
{
var item = listBox1.Items[i];
if (string.Equals(item?.ToString(), text, comparison))
indices.Add(i);
}
// select them in list
if (!indices.Any())
return;
listBox1.SelectedIndices.Clear();
foreach (var index in indices)
listBox1.SelectedIndices.Add(index);
}
當然,串列選擇模式必須是多個才能正常作業。
此外,如果沒有匹配項,您將需要清除選擇,以免 UI 處于模棱兩可的狀態(未完成)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/372222.html
