//代码简单就不解释了
[Description("解决listview闪烁问题,和添加listview单元格单击事件")]
public partial class HListView : ListView{
public HListView()
{
InitializeComponent();
//设置双缓冲解决listview闪烁问题
SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.OptimizedDoubleBuffer |
ControlStyles.AllPaintingInWmPaint, true);
UpdateStyles();
}
//实现listview的MouseDown事件
private void DoubleBufferListView_MouseDown(object sender, MouseEventArgs e)
{
Point tmpPoint = this.PointToClient(Cursor.Position);
ListViewItem.ListViewSubItem subitem = this.HitTest(tmpPoint).SubItem;
ListViewItem item = this.HitTest(tmpPoint).Item;
if (subitem != null)
{
OnCellClickEvent eEvent=new OnCellClickEvent();
eEvent.item = item;
eEvent.subitem = subitem;
if (OnCellClick!=null)
{
OnCellClick(sender, eEvent);
}
}
}
//添加单元格委托和单据事件
public delegate void LVOnCellClick(object sender, OnCellClickEvent e);
[Description("这个是单元格单击事件")]
public event LVOnCellClick OnCellClick; //OnCellClick会在属性窗口显示
}
public class OnCellClickEvent : EventArgs
{
public ListViewItem item;
public ListViewItem.ListViewSubItem subitem;
}
直接复制就能用^_^