我已经想通了。
希望有人会发现这很有用-
在MSDN 上的这个线程中,有人试图创建一个用于单击组标题的事件。我已将其重新用于我的目的如下(有关如何定义函数和常量,请参见链接):
public class MyListView : ListView
{
//
//some other code here, i.e. define constants, PInvoke, etc (see link)
//
protected override void WndProc(ref Message m)
{
//the link uses WM_LBUTTONDOWN but I found that it doesn't work
if (m.Msg == WM_LBUTTONUP)
{
LVHITTESTINFO info = new LVHITTESTINFO();
//The LParamToPOINT function I adapted to not bother with
// converting to System.Drawing.Point, rather I just made
// its return type the POINT struct
info.pt = LParamToPOINT(m.LParam);
//if the click is on the group header, exit, otherwise send message
if (SendMessage(this.Handle, LVM_SUBITEMHITTEST, -1, ref info) != -1)
if ((info.flags & LVHITTESTFLAGS.LVHT_EX_GROUP_HEADER) != 0)
return; //*
}
base.WndProc(ref m);
}
}
这允许识别单击,除非单击组标题。如果你想执行一些额外的功能,//*
你可以放置一个事件等。
如果您需要更多功能,请使用switch
onm.Msg
而不是 using 。if
WndProc