我在程序中新建了一个form,并在这个form上添加了N个listview(listview的数量以及listview的item内容动态生成),
现在要分别响应每个listview的事件(如item[i].checked),怎么处理呢?我给每个控件设置索引并试图定义消息,但响应函数又不晓得怎么定义了。。

解决方案 »

  1.   

    button1.click += new EventHandler(button1_click);象按扭点击这样,增加一个委托和响应函数.
      

  2.   

    手动注册ItemCheckedEvent事件         private void Form1_Load(object sender, EventArgs e)
            {
                ListView myLV = new ListView();
                ListViewItem item = new ListViewItem("abc");
                myLV.Items.Add(item);
                item = new ListViewItem("def");
                myLV.Items.Add(item);
                this.Controls.Add(myLV);
                myLV.CheckBoxes = true;            myLV.ItemChecked+=new ItemCheckedEventHandler(myLV_ItemChecked);
            }
      

  3.   

    漏了事件代码        private void myLV_ItemChecked(object sender, ItemCheckedEventArgs e)
            {
                MessageBox.Show(e.Item.Text);
            }
      

  4.   

    谢谢楼上的几位。
    可能是我说的不明白,有N个listview,要求对每一个listiew都有响应(楼上兄弟讲的是响应单个listiew)
    我自己是通过遍历form里的控件,找出所有listiew然后响应的,不过这样做很不直观,也很麻烦。
    我想问的是有没有其他比较好的办法来处理。
      

  5.   

    将所有动态生成的LISTVIEW的ItemChecked事件统一映射到同一个事件处理过程中,然后根据不同的name去执行相应的操作。不知是否可行?
      

  6.   


    不知道是不是这个意思?
    Private Sub ItemChecked(ByVal sender As Object, ByVal e As System.Windows.Forms.ItemCheckedEventArgs) _
                    Handles ListView1.ItemChecked, ListView2.ItemChecked '关键在这儿
            Select Case CType(sender, ListView).Name
                Case ListView1.Name
                    MsgBox("ListView1-" + e.Item.Text)
                Case ListView2.Name
                    MsgBox("ListView2-" + e.Item.Text)
            End Select
        End Sub
      

  7.   

    利用事件处理过程中sender,转换ListView lv=(ListView)sender;lv.Name
      

  8.   

    可能是想歪了吧。。
    我跟踪了,动态生成的listview根本没名字!!
    所以我才给每个控件加索引的。。
    谢谢楼上的两位。
      

  9.   

    我提议解决了问题后把方案也说一下。
    对你的问题,我类似的1.1版本的解决方法是自己画,然后调客户端的javascript函数,利用ajax调服务器端方法。至于listview你可以自己给它命名,找到规律, 比如把你绑定的数据的某一ID作为他的差异名字,如"abc"+ID,这样你就可以按照规律找到控件了。