我正在将数据与附加的DateTime数据一起加载到列表框中。现在,我想在列表框中搜索包含tagID的项目(例如:e2003450976543)。当我搜索列表框时,即使可以看到它也找不到tagID。我假设搜索参数不排除附加的DateTime数据。这是我的代码:
class ExpiringItem
{
private string text;
public ExpiringItem(string text)
{
this.text = text;
this.Added = DateTime.Now;
}
public DateTime Added { get; private set; }
public override string ToString()
{
return text;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
for (int i = listBox1.Items.Count -1; i > -1; i--)
{
var exp = (ExpiringItem)listBox1.Items[i];
var timeVisible = DateTime.Now - exp.Added;
if (timeVisible.TotalSeconds > 30)
listBox1.Items.RemoveAt(i);
}
}
要插入我正在使用: lstTagsHold.Items.Add(new ExpiringItem(txtTagID.Text));
基本上我要做的就是检查tagID
列表框中是否存在...
对于测试,我正在使用: if (lstHold.Items.Contains(TagID))..
Items.Contains方法对参数与存储在ListBox.Items中的对象的身份进行测试。但是由于您没有对象,而只有一个字符串值,因此它不起作用,因此您需要搜索Items ..:
在text public
按照JC的说明进行制作之后,您可以使用以下函数来访问它:
int findFirstID(ListBox lb, string id)
{
for (int i = 0; i < lb.Items.Count; i++)
{
var ei = lb.Items[i] as ExpiringItem;
// if text is public:
if (ei.text == id) return i;
// if it isn't:
if (ei.ToString()== id) return i;
}
return -1;
}
这将返回具有您要搜索的ID的第一项的索引,如果未找到则返回-1。
如果您只想检查是否在中,则listBox
可以使用以下方法LINQ
:
// if text is public:
if (listBox1.Items.Cast<ExpiringItem>().Where(x => x.text == yourID).Count() > 0) ..
// if it isn't::
if (listBox1.Items.Cast<ExpiringItem>().Where(x => x.ToString()== yourID).Count() > 0) ..
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句