0

我有一个列表框,它将显示二维码解码文本。一旦二维码被解码,来自二维码的文本将在列表框中列出。该程序非常快速地对其进行解码,从而导致列表框中具有相同数据的多个文本条目。我想对列表框进行编程以仅显示 1 个解码的文本,并且不会显示相同的文本,这是对相同二维码进行多次解码的结果。

在此处输入图像描述

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

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


    }

再次感谢

4

2 回答 2

0

如果我认为这listBox1是 a List,那么您可以将其更改为 aSet并防止添加重复项。如果它是不同的对象,则必须调用Contains方法或迭代对象内部:

bool shouldAdd = true;
for(Foo foo : listBox1)  
{  
     if(foo == toAdd)  
     {   
        shouldAdd = false;
        break;

     }  
}  
if(shouldAdd)  
{  
    listBox1.Add(toAdd);
}

您必须覆盖 equals 和 hashcode。

于 2013-05-10T15:31:16.950 回答
0

您可以检查列表框是否已包含该项目:

void fill_listbox()
{
    string item = txtContent.Text;
    if(!listBox.Items.Contains(item))
    {
        listBox1.Items.Add(item);
    }
    textBox1.Text = listBox1.Items.Count.ToString();


}
于 2013-05-10T15:34:48.933 回答