2017-08-05 20 views
1

C#で小さなアプリケーションを作成したいと考えています。ユーザーがテキストボックスに入力し、ボタンをクリックすると、情報がリストビューに表示されます。私のlistviewは3列のヘッダーを持っています。 listviewに一意の単語を入力したいのですが、情報が既に存在する場合は、メッセージボックスにエラーが表示されます。すべてがほぼ完了しましたが、例外があります。私が逃したものを理解していない?ここで一意の項目をリストビューに入力する方法

ListViewItem item = new ListViewItem(); 
int serial = 1; 
private void saveBtn_Click(object sender, EventArgs e) 
{ 
    string code = codeTextBox.Text; 
    string name = nameTextBox.Text; 

    foreach (ListViewItem.ListViewSubItem subItem in item.SubItems) 
    { 
     if (subItem.Text == code) 
     { 
      MessageBox.Show("Code or Department name already exist"); 
      break; 
     } 
     else 
     { 
      item.Text = (serial.ToString()); 
      item.SubItems.Add(code); 
      item.SubItems.Add(name); 
      listView1.Items.Add(item); 
     } 
     serial++; 
    } 
} 

は、「アイテムを追加または挿入することはできません----例外の詳細は 『2』が複数の場所で。あなたは 最初に現在の場所またはクローンからそれを削除する必要がありますそれ\\ \ nパラメータ 名前:アイテム "

+1

「例外があります」例外の詳細を投稿するのか、それとも私たちの想像力に任せますか? –

+0

ここに例外の詳細があります------「複数の場所に「2」の項目を追加または挿入することはできません、現在の場所から削除するか、複製する必要があります。\ r \ nパラメータ名:項目「 –

+0

@YousufYaminあなたはリストのために新しい 'ListViewItem'を作成する必要があります。あなたのコードは最初に作成されたコードを再利用しています。 – Nkosi

答えて

2

これを行うにはSystem.LINQを使用してください。はるかに優れている:あなたはまた、それぞれの新しい項目のためにリストに追加された新しいListViewItemを作成する必要が

if (item.SubItems.Any(t => t.Text == code)) 
    MessageBox.Show("Code or Department name already exist"); 
else 
{ 
    ListViewItem item = new ListViewItem(); 
    item.Text = (serial.ToString()); 
    item.SubItems.Add(code); 
    item.SubItems.Add(name); 
    listView1.Items.Add(item); 
} 

。元のコードでは、同じアイテムを再利用していましたが、すでに同じアイテムを2度追加することはできません。

関連する問題