TextBox.TextChange更新C#中的屏幕ListBox

时间:2015-04-30 08:54:23

标签: c# forms search textbox listbox

现在这可能听起来不是很神秘,但我对处理屏幕上的元素以及Form中的C#等有点新意,所以请耐心等待。它也有点长,因为我觉得我应该提供尽可能多的信息。

我有一个TextBox对象,该对象已添加到我的fSelect(在这种情况下是我的Form),并且这样做:

TextBox searchBox = new TextBox();
fSelect.Controls.Add(searchBox);
searchBox.Location = new Point(40, 255);
searchBox.Width = 520;
searchBox.TextChanged += new EventHandler(searchBox_TextChanged);

现在,您可以看到每次TextBox发生某些变化时,都会执行某项操作。那个行动将是:

private void searchBox_TextChanged(object sender, EventArgs e)
{
    TextBox s = (TextBox)sender;
    bool b = false;
    List<string> f = new List<string>();

    ListBox updatedLb = new ListBox();
    updatedLb.Size = new System.Drawing.Size(568, 255);
    updatedLb.SelectionMode = SelectionMode.MultiSimple;

    foreach (string value in lb.Items)
    {
        if (value.IndexOf(s.Text, StringComparison.OrdinalIgnoreCase) >= 0)
        {
            f.Add(value);
            b = true;
        }
    }

    for (int i = 0; i < f.Count; i++)
    {
        updatedLb.Items.Add(f[i]);
     }

    s.FindForm().Controls.Remove(lb);

    s.FindForm().Controls.Add(updatedLb);

}

查看该代码,有一个需要解释的元素lb。在这种情况下,lbpublic ListBox,其中包含一定数量的string元素。它被定义为任何方法之外的ListBox

现在,在searchBox定义的方法中,我填写了lb,如下所示:

foreach (string value in list)
{
    lb.Items.Add(value.title);
}

(如果重要,我还应该提一下,string添加lbfSelect之后才会被Form Form添加。)

现在,对于那些尚未猜到我的问题的人;我希望向用户提供ListBox,其中包含ListBox。此string中的元素将包含用户键入searchBox的任何元素,用户键入searchBox

问题是,搜索只执行一次,并且唯一搜索的是用户放在searchBox中的第一个键。 IE:如果我是用户并且我要搜索“密钥”,并且第一个字母是“k”,则列表将更新以显示标题中带有“k”的任何内容。但是当我尝试键入“e”时,它不会更新或更改。如果用户删除了Form中的部分文字,它也不会恢复到旧列表。

如何根据用户输入的内容ListBox获取显示searchBox for (int i=0;i<=dtB.Columns.Count-1;i++) { array(0, i) = dtB.Compute("SUM([" & dtB.Columns(i).ColumnName & "])", "") } 元素的serial

0 个答案:

没有答案