在 InputBox 上写的 ListBox 中搜索单词(C# VS)
Search for word in ListBox written on InputBox (C# VS)
我有一个带有单词的列表框,我需要单击一个按钮打开一个输入框,我可以在其中搜索单词,程序将 运行 列表框并突出显示我在输入框中写的单词,如果在那。如果程序到达列表的末尾但没有找到该词,那么我将收到一个消息框,说明我要查找的词不存在。我需要为这个程序使用某种循环。
我知道按钮、输入框和错误消息框是怎么做的,但是我不知道怎么查找和循环。
我在这里读了很多类似的问题,但我不认为其中任何一个 return 我正在寻找的结果。
谁能帮帮我?或者将我重定向到带有答案的 post?
这是针对 Winforms 的。
这应该让你走上正轨,它几乎是不言自明的:
- 每当文本更改时
- 在列表中查找匹配项
- select 他们
代码:
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);
}
当然,list select离子模式必须是多个才能正常工作。
此外,如果没有匹配项,您需要清除 selection,以免 UI 处于不明确的状态(未完成)。
我有一个带有单词的列表框,我需要单击一个按钮打开一个输入框,我可以在其中搜索单词,程序将 运行 列表框并突出显示我在输入框中写的单词,如果在那。如果程序到达列表的末尾但没有找到该词,那么我将收到一个消息框,说明我要查找的词不存在。我需要为这个程序使用某种循环。
我知道按钮、输入框和错误消息框是怎么做的,但是我不知道怎么查找和循环。
我在这里读了很多类似的问题,但我不认为其中任何一个 return 我正在寻找的结果。
谁能帮帮我?或者将我重定向到带有答案的 post?
这是针对 Winforms 的。
这应该让你走上正轨,它几乎是不言自明的:
- 每当文本更改时
- 在列表中查找匹配项
- select 他们
代码:
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);
}
当然,list select离子模式必须是多个才能正常工作。
此外,如果没有匹配项,您需要清除 selection,以免 UI 处于不明确的状态(未完成)。