2013-02-28 73 views
2

我在列表框中遇到問題。
如果我有一個文本框和一個將數據放入列表框的添加按鈕。
意外地輸入了兩次相同的名字。
如何防止列表框中的重複項?
我是否將代碼輸入到按鈕部分或列表框中?列表框重複項

+1

你能發表一些代碼嗎?你已經嘗試了什麼? – 2013-02-28 11:06:59

+0

@MartinMcGirk:發表! – 2013-02-28 11:34:21

回答

2

您可以在添加它之前簡單地檢查它是否已經存在,例如,與Linq:

bool contains = lbName.Items.Cast<ListItem>() 
    .Any(li => li.Text.Equals(txtName.Text, StringComparison.OrdinalIgnoreCase)); 
if(!contains) 
{ 
    lbName.Items.Add(new ListItem(txtName.Text)); 
} 

假設您要比較不區分大小寫。

編輯既然你真的想完整的文件路徑添加到ListBox,但要防止以相同的文件名稱的第二個文件被添加,你可以使用Path類:

string fullFilePath = .... 
string fileName = Path.GetFileName(fullFilePath); 
bool contains = lbName.Items.Cast<ListItem>() 
    .Any(li => Path.GetFileName(li.Text).Equals(fileName, StringComparison.OrdinalIgnoreCase)); 
if (!contains) 
{ 
    lbName.Items.Add(new ListItem(fullFilePath)); 
} 
+0

如果這個文本框是一個文件瀏覽器的目錄,它將文件名添加到列表框中,但是如果再次按下文件名將被重新添加? – 2013-02-28 11:19:35

+0

@KevinChun:恐怕我無法跟隨。該代碼適用於任何字符串,源代碼無關緊要。或者你想要將**完整路徑**添加到文件中,但是想要防止添加具有相同**文件名**的第二個文件? – 2013-02-28 11:22:14

+0

:是的,這是正確的。 – 2013-02-28 11:23:41

1

在你點擊鏈接,你可以有這樣的事情:

if (this.listBox.Items.Contains(this.txtCustomerName.Text) == false) 
    { 
    this.listBox.Items.Add(this.txtCustomerName.Text); 
    } 

或者,如果你使用時listItems:

ListItem item = new ListItem(this.txtCustomerName.Text); 

if (listBox.Items.Contains(item) == false) 
{ 
    listBox.Items.Add(item); 
} 
+0

什麼是假設替換txtCustomerName? – 2013-02-28 11:28:57

+0

@KevinChun你想檢查的值.. – stuartd 2013-02-28 11:45:21

0

添加代碼按鈕,你甚至可以添加代碼到您的文本框的事件檢查生活,輸入的文本是正確的。