为ListView Items_added添加事件处理程序

Egy*_*ast 6 c# winforms

在C#Windows窗体应用程序中; 是否有一个ListView控件的事件处理程序,当项目添加到listview项目时触发?

rai*_*rle 9

你不需要编辑其他来源!

好的:从ListView更改为myListView

很久以前 - 但我搜索没有带有自己的ItemAdd-Function的工具的解决方案!最好的方法...使用WndProc函数.

消息:LVM_INSERTITEM

http://msdn.microsoft.com/en-us/library/windows/desktop/bb761107%28v=vs.85%29.aspx

//COMMCTRL.H
#define LVM_FIRST               0x1000           // ListView messages
#define LVM_INSERTITEMA         (LVM_FIRST + 7)  
#define LVM_INSERTITEMW         (LVM_FIRST + 77) 
//edit itemremove (LVM_DELETEITEM)
#define LVM_DELETEITEM          (LVM_FIRST + 8)
Run Code Online (Sandbox Code Playgroud)

C# - 实施

class myListView : ListView {

    protected override void WndProc(ref Message m){
        base.WndProc(ref m);

        switch (m.Msg){
            case 0x1007:    //ListViewItemAdd-A
                System.Diagnostics.Debug.WriteLine("Item added (A)");
                break;
            case 0x104D:    //ListViewItemAdd-W
                System.Diagnostics.Debug.WriteLine("Item added (W)");
                break;
            //edit for itemremove
            case 0x1008:
                System.Diagnostics.Debug.WriteLine("Item removed");
                break;
            case 0x1009:
                System.Diagnostics.Debug.WriteLine("Item removed (All)");
                break;
            default:
                break;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

现在您可以激活自己的ItemAddedEvent.我希望能帮助其他有同样问题的人.

gegards raiserle

(编辑:请投票;))

  • http://msdn.microsoft.com/en-us/library/windows/desktop/bb774895%28v=vs.85%29.aspx查看我的帖子:D (2认同)
  • 谢谢 - السلامعليكم (2认同)
  • 未来探险家的注意事项..."删除所有项目"的特定消息,值0x1009;) (2认同)

Ser*_*pth 5

我会在这里这里看到。它们或多或少是相同的答案,只是以非常不同的风格编写。简短版本,将 ItemAdded 事件添加到 ListViewItemCollection。

  • RTFM 甚至不是答案! (2认同)

DiG*_*GMi 5

没有任何事件可以做到这一点。但您始终可以创建自己的列表框:

public class MyListView : ListView
{
    public void AddItem(ListViewItem item)
    {
        Items.Add(item);
        if (ItemAdded != null)
            ItemAdded.Invoke(this, new ItemsAddedArgs(item));
    }

    public EventHandler<ItemsAddedArgs> ItemAdded;
}

public class ItemsAddedArgs : EventArgs
{
    public ItemsAddedArgs(ListViewItem item)
    {
        Item = item;
    }

    public object Item { get; set; }
}
Run Code Online (Sandbox Code Playgroud)