c#列表框实时搜索
我正在学习c#,我从制作一些虚拟应用程序开始,里面有我可以练习的所有元素。我有搜索文本字段,下面有一个包含项目的列表框 我尝试使用此代码,但只有当我从第一个字母开始搜索时,我才得到结果。我希望能够通过单词之间的字母进行搜索 示例:列表项:“0445110085” 如果我从“0445”开始搜索,我将得到结果,但如果我从“5110”开始搜索,例如,我得到的消息项未找到 下面是我的代码c#列表框实时搜索,c#,winforms,visual-studio,C#,Winforms,Visual Studio,我正在学习c#,我从制作一些虚拟应用程序开始,里面有我可以练习的所有元素。我有搜索文本字段,下面有一个包含项目的列表框 我尝试使用此代码,但只有当我从第一个字母开始搜索时,我才得到结果。我希望能够通过单词之间的字母进行搜索 示例:列表项:“0445110085” 如果我从“0445”开始搜索,我将得到结果,但如果我从“5110”开始搜索,例如,我得到的消息项未找到 下面是我的代码 private void searchBox_TextChanged(object sender, EventArg
private void searchBox_TextChanged(object sender, EventArgs e)
{
string myString = searchBox.Text;
int index = listBox1.FindString(myString, -1);
if (index != -1)
{
listBox1.SetSelected(index,true);
}
else
MessageBox.Show("Item not found!");
}
提前谢谢
注意:)使用StartsWith方法检查特定项目是否以您输入的字符串开头:
private void searchBox_TextChanged(object sender, EventArgs e)
{
string prefix = searchBox.Text;
bool found = false;
for(int i = 0; i < listBox.Items.Count; i++)
{
if(listBox.Items[i].ToString().StartsWith(prefix))
{
listBox.SelectedItem = listBox.Items[i];
found = true;
break;
}
}
if(!found)
{
MessageBox.Show("Item not found!");
}
}
private void searchBox\u text已更改(对象发送者,事件参数e)
{
字符串前缀=searchBox.Text;
bool-found=false;
对于(int i=0;i
从FindString的详细信息中
在System.Windows.Forms.ListBox中查找以开头的第一项
指定的字符串
因此,您必须自定义编写代码来实现它。像下面这样
private void textBox1_TextChanged(object sender, EventArgs e)
{
string myString = textBox1.Text;
bool found = false;
for (int i = 0; i <= listBox1.Items.Count - 1; i++)
{
if(listBox1.Items[i].ToString().Contains(myString))
{
listBox1.SetSelected(i, true);
found = true;
break;
}
}
if(!found)
{
MessageBox.Show("Item not found!");
}
}
private void textBox1\u TextChanged(对象发送者,事件参数e)
{
字符串myString=textBox1.Text;
bool-found=false;
对于(int i=0;i可能重复的可能重复的可能重复的这不是上述两项的重复,因为它们用于不同的控件和/或框架。将ComboBox替换为ListBox和我引用的一项。User2012384也可以工作。它肯定是重复的。我在第一次按键时出错。谢谢你的帮助。你能告诉我吗请告诉我您收到了什么错误?已修复。请立即重试。错误1“System.Windows.Forms.ListBox.ObjectCollection”不包含“Length”的定义,并且找不到接受类型为“System.Windows.Forms.ListBox.ObjectCollection”的第一个参数的扩展方法“Length”(是否缺少using指令或程序集引用?)C:\Users\shogy\Documents\visualstudio 2010\Projects\WindowsFormsApplication4a\WindowsFormsApplication4\Form1.cs 55 48 WindowsFormsApplication4抱歉。再次修复。现在没有工作室:/@AleksandarMilic不客气。编码和学习愉快!!:D:D希望有一天我能像你们今天帮助我一样帮助别人。贝丝关于此解决方案有两个问题。第一个问题很小,作者可能会接受(此类型的经典搜索使用StartsWith方法不包含)。第二个问题是,您没有检查列表的最后一项,因此将永远找不到它。@Seprum OP希望搜索列表框中的项目中是否存在他的搜索文本。StartsWith如何在这里起作用?FindString已经这样做了,但这不是问题所在。第二,所有项目都将被验证,直到列表框直到找到匹配项。你怎么说最后一项永远找不到?请看这部分:i
。无需减去1
。