我有一个列表框,它将显示qr代码解码文本。一旦qr代码被解码,qr代码中的文本将列在列表框中。程序解码速度非常快,导致多个文本条目与列表框中的数据相同。我想编制一个列表框,只显示1个已解码的文本,并且不会显示相同的文本,这是同一个qr代码的多次解码的结果。
下面是我的列表框源代码。我认为需要在那里进行额外的编程。很乐意接受有关此事的任何建议或教程
/// <summary>
/// To show the result of decoding. the result is feed to Barcode Format, QR Content and Scanned item.
/// </summary>
/// <param name="result"></param>
private void ShowResult(Result result)
{
currentResult = result;
txtBarcodeFormat.Text = result.BarcodeFormat.ToString();
txtContent.Text = result.Text;
fill_listbox();
}
/// <summary>
/// Item scanned will be listed in listbox
/// </summary>
void fill_listbox()
{
string item = txtContent.Text;
listBox1.Items.Add(item);
textBox1.Text = listBox1.Items.Count.ToString();
}
再次感谢
答案 0 :(得分:0)
如果我假设listBox1
是List
,则可以将其更改为Set
,并防止添加重复项。如果它是一个不同的对象,则必须调用Contains
方法或迭代对象内部:
bool shouldAdd = true;
for(Foo foo : listBox1)
{
if(foo == toAdd)
{
shouldAdd = false;
break;
}
}
if(shouldAdd)
{
listBox1.Add(toAdd);
}
必须覆盖equals和hashcode。
答案 1 :(得分:0)
您可以检查列表框是否已包含该项目:
void fill_listbox()
{
string item = txtContent.Text;
if(!listBox.Items.Contains(item))
{
listBox1.Items.Add(item);
}
textBox1.Text = listBox1.Items.Count.ToString();
}