2013-08-14 6 views
1

리스트 뷰에서 행의 중복을 방지하려면 어떻게해야합니까? 위의 코드가 더 있지만리스트 뷰에서 행 중복 방지

ListViewItem item = listView1.FindItemWithText(EmpID.Text); 
if (!listView1.Items.Contains(item)) 
{ 
listView1.Items.Add(new ListViewItem(new string[] { EmpID.Text, Fname.Text, Lname.Text })); 
} 

답변

2
ListViewItem item = listView1.FindItemWithText(EmpID.Text); 
if(item == null){ 
    listView1.Items.Add(new ListViewItem(new string[] { EmpID.Text, Fname.Text, Lname.Text })); 
} 

또는 당신은 또한 IndexOf()를 사용할 수는, (나는 그렇게 생각) :

if(listView1.Items.IndexOf(item) == -1){ 
    listView1.Items.Add(new ListViewItem(new string[] { EmpID.Text, Fname.Text, Lname.Text })); 
} 

또는 약간 LINQ에 의해

:

if(!listView1.Items.OfType<ListViewItem>().Any(x=>x.Text.Equals(EmpID.Text, StringComparison.CurrentCultureIgnoreCase))){ 
    listView1.Items.Add(new ListViewItem(new string[] { EmpID.Text, Fname.Text, Lname.Text })); 
} 
+0

감사합니다. 이유는 무엇입니까? listView1.Items.Contains (item)가 작동하지 않습니다? –

+0

@KarlxSwanovski 저는 이것이 'Contains'구현에 의한 것이라고 생각합니다. '인수 전달'을 검사 할 수 있습니다. 'null'인 경우 예외가 throw됩니다. 귀하의 경우,'item'은'EmpID.Text'가'listView1.Items'에서 발견되지 않으면'null'이 될 것입니다. –

관련 문제