In C# Windows Form Application; Is there an event handler for the ListView control that is fired when items are added to the listview items ?
You dont need to edit other source!
Ok: change from ListView to myListView
Long time ago - but i search for an solution without implements with own ItemAdd-Function! The best way to do it... use the WndProc-Function.
Message: 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)
C#-implementation
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;
}
}
}
Now you can fire your own ItemAddedEvent. I hope that helps other people, who have the same issue.
gegards raiserle
(edit: please vote ;) )
I would see here or here. They are more or less the same answer, just written in very different styles. Short version, add ItemAdded event to ListViewItemCollection.
There is no event that do that. But you can always create your own list box:
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; }
}
Another alternative is to hold the items in an instance of the ObservableCollection class, set ListView.ItemsSource to that collection and subscribe to the ObservableCollection.CollectionChanged event.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With