在C#Windows窗体应用程序中; 是否有一个ListView控件的事件处理程序,当项目添加到listview项目时触发?
你不需要编辑其他来源!
好的:从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
(编辑:请投票;))
没有任何事件可以做到这一点。但您始终可以创建自己的列表框:
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)
归档时间: |
|
查看次数: |
17974 次 |
最近记录: |