比如我写个事件委托类,在form1中注册一个委托(目的是为form1中的listview添加一条记录),我form2也注册这个委托(目的是为form2中的listview添加一条记录),触发事件发生在form1中,怎么只能在Form2中才添加了这条记录,form1中没有,如果将from2中的委托取消,form1中添加没问题,难道不能同时注册吗?但form1,form2中的委托事件全触发了啊,请教高手,最好有代码参考?

解决方案 »

  1.   

    form1和form2中全部订阅这个添加事件,form1和form2中分别处理就可以了,
      

  2.   

    from2:
    public event EventHandler MyEvent;
    if(MyEvent!=null)
    {
    MyEvent(this,null);
    }public BindListViewfr2()
    {
    //listview数据添加事件
    }
    from1:
    prvite BindListViewfr1(Sender object,EventArgs e)
    {
    //listview数据添加事件
    }
    from2 fr2=new form2();
    fr2.MyEvent += new EventHandler(BindListView);
      

  3.   

    form1,from2属于两个独立窗体。
    问题不是事件委托问题,是加listview时出错,但我还是没想通问什么?  public void Add_listview(ListViewItem msg)
            {
                if (msg != null)
                 {
                    try
                    {
                        listView1.Items.Add(msg);
                    }
                    catch
                    {
                    }
                 //   MessageBox.Show(msg.SubItems[0].Text.ToString());
                }
            }
    触发事件的第一个处理事件 public void Add_listview(ListViewItem msg)
            {
                if (msg != null)
                {
                    try
                    {
                        if (listView1.Items.Count != 0)
                        {
                            listView1.Items.Clear();
                            this.textBox1.Text = "";
                        }                    MessageBox.Show(msg.SubItems[0].Text.ToString());
                        ListViewItem item = new ListViewItem();                    item.Text = msg.Text ;                    // lvi.SubItems.Add();
                        item.SubItems.Add(msg.SubItems[1].Text.ToString());
                        item.SubItems.Add("份");
                        item.SubItems.Add(msg.SubItems[3].Text.ToString());
                     //   item.SubItems=
                            listView1.Items.Add(item);
                       
                    }
                    catch { 
                    }
                }
    触发事件的第二个处理事件
    如果改成这样添加就没问题了,但如果都是第一个处理方法那样就会只能有一个listview添加成功,请教高人说说原因
      

  4.   

    form1,form2是独立的窗体,如果你这样不行的话,可以将form1和form2的实例传过去看看呢