列表与LT;>不正常

时间:2014-02-23 05:10:31

标签: c# list events

有一个listView,标签显示名为Name的列表的当前计数,当列表计数超过5时会有一个事件提升。但是当我输入文本框中的名称时(它转到列表中)它显示计数,但列表视图没有正确获取它们.EX-当我输入第一个名称标签显示计数为1,列表视图显示我在文本框中输入的名称和当我输入第二个名称标签显示列表计数器正确但列表视图不仅添加了我输入的第二个项目,还添加了之前我已经输入的第一个项目。那么列表视图中有三个项目。这是我的代码

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); ;}
        }

    }

1 个答案:

答案 0 :(得分:0)

问题:每次从列表中添加项目时,都不清楚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中输入的项目,而不是添加来自开始的所有项目。因此您需要在此处删除for循环。

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