listview columnclick外部列

时间:2009-08-24 11:01:47

标签: c# winforms listview

ListView.ColumnClick似乎不会触发列之外的标题区域中的点击(最后一列右侧的区域,如果有的话)

有一些简单的方法来检测点击吗?

2 个答案:

答案 0 :(得分:2)

listview标题是listview控件中的单独实体/窗口。遗憾的是,listview没有提供任何鼠标事件,您可以使用它捕获标题上的任何活动(除了明显的活动)。您将不得不创建listview控件的扩展版本,并使用一些较低级别的非托管方法来访问该窗口并使这些事件可用。

您可以从这里开始:http://www.codeproject.com/KB/list/HeaderRightClick.aspx

答案 1 :(得分:1)

即使在较低的水平,这也不容易。给定的文章依赖于MenuOpening事件,当用户左键单击标题时,该事件 not 。实际上,当在列之外单击(左)标题时,ListView不会收到任何通知。

ObjectListView(围绕.NET WinForms ListView的开源包装器)具有您已经需要的所有管道,并且可以轻松修改以执行此操作。

在HeaderControl.cs文件中,查找WndProc()方法并将其添加到那里的case语句中:

case 0x0201: //WM_LBUTTONDOWN
    if (this.ColumnIndexUnderCursor == -1) {
        System.Diagnostics.Debug.WriteLine("header click on no column");
    };
    break;