2014-02-23 90 views
-1

有一個listView,它顯示名爲Name的列表的當前計數的標籤,並且當列表計數超過5時會引發一個事件,但是當我在文本框中輸入名稱時它進入列表)它顯示的數量,但列表視圖不能正確得到它們.EX-當我輸入第一個名稱標籤顯示計數爲1和列表視圖顯示我在文本框中輸入的名稱,當我輸入第二個NAME標籤正確顯示列表計數器,但列表視圖不僅添加了我輸入的第二個項目,而且還添加了我之前輸入的第一個項目。那麼在列表視圖中有三個項目。這裏是我的代碼List <>不能正常工作

public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 

     } 
     List<string> emps = new List<string>(); 
     private void button1_Click(object sender, EventArgs e) 
     { 

      listMake lm = new listMake(); 

      lm.ListItemAdded += new listMake.listMethods(lm_ListItemAdded); 
      lm.adding(emps, textBox1,listView1); 
      label1.Text = emps.Count.ToString(); 

     } 

     void lm_ListItemAdded(List<string> names) 
     { 
      MessageBox.Show("it enough i think its more than 5"); 

     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 


    } 
    class listMake 
    { 
     public delegate void listMethods(List<string> names); 
     public event listMethods ListItemAdded; 

     public List<string> Name = new List<string>(); 
     public void adding(List<string>Name,TextBox t1,ListView l1) 
     { 
      try 
      { 

       if (t1.Text != "") 
       { 
        Name.Add(t1.Text); 

        for (int i = 0; i < Name.Count; i++) 
        { 
         l1.Items.Add(Name[i]); 
        } 


        if (Name.Count > 5) 
         ListItemAdded(Name); 
       } 
      } 
      catch (Exception er) { MessageBox.Show(er.StackTrace); ;} 
     } 

    } 

回答

0

問題:你是不是clearinig每次從列表中添加項目時的ListView項目。

解決方案1:您需要在添加之前清除列表視圖中的項目。

 if (t1.Text != "") 
     { 
      Name.Add(t1.Text); 
      l1.Items.Clear(); //add this statement 
      for (int i = 0; i < Name.Count; i++) 
      { 
       l1.Items.Add(Name[i]); 
      } 


      if (Name.Count > 5) 
       ListItemAdded(Name); 
     } 

解決方案2:您可以只添加項TextBbox enetered而不是從begining.so你needto刪除for循環這裏添加的所有項目。

 if (t1.Text != "") 
     { 
      Name.Add(t1.Text); 
      l1.Items.Add(t1.Text); 
      if (Name.Count > 5) 
       ListItemAdded(Name); 
     } 
+0

嘿謝謝Sudhakar它的工作,但我不明白爲什麼我們需要清除存儲在它之前的清單。因爲我們通過「名稱[i]」在列表中指定字符串。然後它指向特定的字符串。 – user3304413

+0

@ user3304413:是的,但是你在循環中運行它,所以它不僅添加當前項目,而且還從開始添加項目 –

+0

@ user3304413:例如,在文本框中輸入「a」,然後將「a」添加到列表中,然後將所有列表項(a)添加到列表視圖中,現在輸入'b',然後將'b'添加到'list'中,並將列表(a,b)中的所有項添加到列表視圖中。所以這裏的列表視圖已經包含了項目'a',並且''列表中還添加了'a'和'b'。 –