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
和构造函数之间。一切正常。非常感谢你。