如题,当listview add 和 remove item 时添加个事件处理。望大牛给个代码listview控件C#自定义事件
解决方案 »
- C# 安装部署 断点调试问题!
- window 窗体里button 按钮的Click 事件该写些什么呢 在线等
- c#c# and girl doing
- 求怎则...怎则弱智求怎则拉..谢谢各位帮忙...
- 再问有关webform的多线程问题, 请welshem(天堂客) 再来,up者有分.
- 求助各位大牛 pdf转文字的方法
- 导入数据好慢啊、求解释啊
- win8 metro 如何遍历Gridview中的每个控件(C#)
- 北京新资源开发部招聘.Net程序员!
- 請問用winForm中的ListView控件怎麼實現資源管理器的功能?
- Highcharts动态显示多条实时曲线(条数不定),怎么初始化数据
- saveFileDialog一点程序就死了
ADD 对应ListView1_ItemCreated
remove 对应 ListView1_ItemDeleting
如果要再增加事件的话
this.ListView1.ItemDeleting+=new EventHandler<ListViewDeleteEventArgs>(ListView1_ItemDeleting2);
public EventHandler<ListViewDeleteEventArgs> ListView1_ItemDeleting2 (object sender, ListViewItemEventArgs e){}
你需要给 listView绑定一个BindingContext ,每次去修改这个绑定的集合,再重新绑定。
触发 BindingContextChanged事件
要自定义事件的话 可以使用
this.listView1.BindingContextChanged+=new EventHandler(listView1_BindingContextChanged2);
listView1_BindingContextChanged2 为自定义事件
自己继承一个ListViewEx控件 与 ListViewItemCollectionEx 类,然后重写继承的 Items属性 变为
ListViewItemCollectionEx
在ListViewItemCollectionEx 重载Add与Remove方法 向ListViewEx 抛事件
this.ListView1.ItemAdding+=new EventHandler<ListViewAddEventArgs>(ListView1_ItemAdding2); public EventHandler<ListViewDeleteEventArgs> ListView1_ItemDeleting2 (object sender, ListViewItemEventArgs e)
{
DoSomeThing();
}
public EventHandler<ListViewAddEventArgs> ListView1_ItemAdding2(object sender, ListViewItemEventArgs e)
{
DoSomeThing();
}public void DoSomeThing()
{}
自己继承一个ListViewEx控件 与 ListViewItemCollectionEx 类,然后重写继承的 Items属性 变为
ListViewItemCollectionEx
在ListViewItemCollectionEx 重载Add与Remove方法 向ListViewEx 抛事件
可以给个代码例子吗?我是菜鸟。谢谢
{
private delegate ItemChanged sendmessage;
private ListViewItemCollection items;
public ListViewItemCollectionEx(ListViewItemCollection items)
{
this.items = items;
}
public ItemChanged Sendmessage
{
set{ sendmessage = value;}
} public add(ListViewItem item)
{
this.items.add(items);
if(sendmessage!=null)
sendmessage(new ListViewItem[]{item});
} public insert(int index, ListViewItem item)
{
this.items.insert(index, item);
if(sendmessage!=null)
sendmessage(new ListViewItem[]{item});
}
public remove(ListViewItem item)
{
this.items.remove(item);
if(sendmessage!=null)
sendmessage(new ListViewItem[]{item});
}
public remove(int index)
{
ListViewItem itme = this.items[index];
this.items.remove(index);
if(sendmessage!=null)
sendmessage(new ListViewItem[]{item});
} public removeall()
{
ListViewItem items = this.items.toarray();
this.items.removeall();
if(sendmessage!=null)
sendmessage(items );
}
}
public Class ListViewEx:ListView
{
public ListViewItemCollectionEx ItemEx
{
get
{
return new ListViewItemCollectionEx(base:Items);
}
}
public ItemChanged Sendmessage
{
set{ ItemEx.Sendmessage = value;}
}
}大概是这样,自己调吧
public Class ListViewEx:ListView
{
public ListViewItemCollectionEx ItemEx
{
get
{
return new ListViewItemCollectionEx(base:Items);
}
}
public ItemChanged Sendmessage
{
set{ ItemEx.Sendmessage = value;}
}
}后半段错了,应该是:public Class ListViewEx:ListView
{
private ListViewItemCollectionEx itemEx;
public ListViewItemCollectionEx ItemEx
{
get
{
if(itemEx == null)
itemEx = new ListViewItemCollectionEx(base:Items);
return itemEx;
}
}
public ItemChanged Sendmessage
{
set{ ItemEx.Sendmessage = value;}
}
}
自己继承一个ListViewEx控件 与 ListViewItemCollectionEx 类,然后重写继承的 Items属性 变为
ListViewItemCollectionEx
在ListViewItemCollectionEx 重载Add与Remove方法 向ListViewEx 抛事件
可以给个代码例子吗?我是菜鸟。谢谢public class ListViewEx : ListView
{
private ListViewItemCollectionEx _Items;
public event EventHandler<ListViewItemEventArgs> ItemAdded;
public event EventHandler<ListViewItemEventArgs> ItemRemoved;
public ListViewEx()
{
_Items = new ListViewItemCollectionEx(this,base.Items);
}
public new ListViewItemCollectionEx Items
{
get {
return _Items;
}
} internal void OnItemAdded(ListViewItem item)
{
if (ItemAdded != null)
{
ItemAdded(this, new ListViewItemEventArgs(item));
}
} internal void OnItemRemoved(ListViewItem item)
{
if (ItemRemoved != null)
{
ItemRemoved(this, new ListViewItemEventArgs(item));
}
}
} public class ListViewItemCollectionEx : System.Windows.Forms.ListView.ListViewItemCollection
{
private ListViewEx _Owner;
System.Windows.Forms.ListView.ListViewItemCollection _baseCollecation;
public ListViewItemCollectionEx(ListViewEx owner, System.Windows.Forms.ListView.ListViewItemCollection baseCollecation)
: base(owner)
{
_Owner = owner;
_baseCollecation = baseCollecation;
} public override ListViewItem Add(ListViewItem value)
{
_baseCollecation.Add(value);
_Owner.OnItemAdded(value);
return value;
} public override void Remove(ListViewItem value)
{
_baseCollecation.Remove(value);
_Owner.OnItemRemoved(value);
}
}
public class ListViewItemEventArgs:EventArgs
{
public readonly ListViewItem Item;
public ListViewItemEventArgs(ListViewItem item)
{
Item = item;
}
}上面这样子吧,虽不完美,也可以用用。要用Add的方式就可以不要用DataSource
自己继承一个ListViewEx控件 与 ListViewItemCollectionEx 类,然后重写继承的 Items属性 变为
ListViewItemCollectionEx
在ListViewItemCollectionEx 重载Add与Remove方法 向ListViewEx 抛事件
可以给个代码例子吗?我是菜鸟。谢谢public class ListViewEx : ListView
{
private ListViewItemCollectionEx _Items;
public event EventHandler<ListViewItemEventArgs> ItemAdded;
public event EventHandler<ListViewItemEventArgs> ItemRemoved;
public ListViewEx()
{
_Items = new ListViewItemCollectionEx(this,base.Items);
}
public new ListViewItemCollectionEx Items
{
get {
return _Items;
}
} internal void OnItemAdded(ListViewItem item)
{
if (ItemAdded != null)
{
ItemAdded(this, new ListViewItemEventArgs(item));
}
} internal void OnItemRemoved(ListViewItem item)
{
if (ItemRemoved != null)
{
ItemRemoved(this, new ListViewItemEventArgs(item));
}
}
} public class ListViewItemCollectionEx : System.Windows.Forms.ListView.ListViewItemCollection
{
private ListViewEx _Owner;
System.Windows.Forms.ListView.ListViewItemCollection _baseCollecation;
public ListViewItemCollectionEx(ListViewEx owner, System.Windows.Forms.ListView.ListViewItemCollection baseCollecation)
: base(owner)
{
_Owner = owner;
_baseCollecation = baseCollecation;
} public override ListViewItem Add(ListViewItem value)
{
_baseCollecation.Add(value);
_Owner.OnItemAdded(value);
return value;
} public override void Remove(ListViewItem value)
{
_baseCollecation.Remove(value);
_Owner.OnItemRemoved(value);
}
}
public class ListViewItemEventArgs:EventArgs
{
public readonly ListViewItem Item;
public ListViewItemEventArgs(ListViewItem item)
{
Item = item;
}
}上面这样子吧,虽不完美,也可以用用。要用Add的方式就可以不要用DataSource恩 这个重写控件了,更牛逼~~