现在这可能听起来不是很神秘,但我对处理屏幕上的元素以及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
。在这种情况下,lb
是public
ListBox
,其中包含一定数量的string
元素。它被定义为任何方法之外的ListBox
。
现在,在searchBox
定义的方法中,我填写了lb
,如下所示:
foreach (string value in list)
{
lb.Items.Add(value.title);
}
(如果重要,我还应该提一下,string
添加lb
到fSelect
之后才会被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
?