C# 在列表框中查找字符串
我想在C# 在列表框中查找字符串,c#,winforms,C#,Winforms,我想在列表框上执行搜索。用户在文本框中输入名称,并且在列表框中只保留匹配的变体。如何做到这一点?有一个项目列表或数组,当用户搜索时,只在列表框中显示结果,否则显示所有条目。这可以实现。您可能需要修改我的实现,但这确实有效 将以下变量添加到类中: private readonly ListBox.ObjectCollection _originalListCollection; 然后使用构造函数,我们使用当前在列表框中的数据初始化此变量: public FrmStatus() {
列表框
上执行搜索。用户在文本框
中输入名称,并且在列表框
中只保留匹配的变体。如何做到这一点?有一个项目列表或数组,当用户搜索时,只在列表框中显示结果,否则显示所有条目。这可以实现。您可能需要修改我的实现,但这确实有效
将以下变量添加到类中:
private readonly ListBox.ObjectCollection _originalListCollection;
然后使用构造函数,我们使用当前在列表框中的数据初始化此变量:
public FrmStatus()
{
InitializeComponent();
_originalListCollection = listBox1.Items;
}
然后我们向文本框添加一个KeyUp
值,该方法如下所示:
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
var matching = (from object i in _originalListCollection where i.ToString().Contains(textBox1.Text) select i).ToList();
listBox1.DataSource = matching;
}
现在将信息添加到Designer.cs文件:
this.textBox1.Location = new System.Drawing.Point(12, 28);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(100, 20);
this.textBox1.TabIndex = 0;
this.textBox1.KeyUp += new System.Windows.Forms.KeyEventHandler(this.textBox1_KeyUp); //important
this.listBox1.FormattingEnabled = true;
this.listBox1.Items.AddRange(new object[] {
"dave",
"john",
"eric",
"jospeh",
"bob",
"harry"});
this.listBox1.Location = new System.Drawing.Point(152, 28);
this.listBox1.Name = "listBox1";
this.listBox1.Size = new System.Drawing.Size(120, 95);
this.listBox1.TabIndex = 1;
它是有效的
我想你必须为此编写代码……你的问题太广泛了,你有什么问题?您尝试过什么?如果用户在文本框中输入名称/文本,则只会保留匹配的变体,那么不匹配的变体如何?它们将永远在列表框中删除吗?或者,如果用户删除文本框中的名称/文本,listbox以前的数据将返回?您可以将完整列表存储在标记中,并在TextChanged事件发生时创建一个新的项目数组。这是一个模型/视图分离原则:有一个模型(所有可能的项目)和UI(
listbox
)显示模型的筛选子集,以及如果用户添加了列表框中的数据会发生什么。按下按钮并打开OpenFileDialog?我想在列表框上实现搜索。用户在文本框中输入名称,列表框中只保留匹配的变体。如何做到这一点?
这就是问题所在。private readonly ListBox.ObjectCollection\u originalListCollection
-如何处理这些?插入位置?在公共部分类FrmName:Form
和构造函数之间。一切正常。非常感谢你。