如何解决列表框中的冗余数据

时间:2013-05-10 15:27:54

标签: c# listbox qr-code

我有一个列表框,它将显示qr代码解码文本。一旦qr代码被解码,qr代码中的文本将列在列表框中。程序解码速度非常快,导致多个文本条目与列表框中的数据相同。我想编制一个列表框,只显示1个已解码的文本,并且不会显示相同的文本,这是同一个qr代码的多次解码的结果。

enter image description here

下面是我的列表框源代码。我认为需要在那里进行额外的编程。很乐意接受有关此事的任何建议或教程

    /// <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();


    }

再次感谢

2 个答案:

答案 0 :(得分:0)

如果我假设listBox1List,则可以将其更改为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();


}