我做到了这一点并且工作正常:
private int getcolumn()
{
Point mousePosition = base.PointToClient(Control.MousePosition);
ListViewHitTestInfo hit = base.HitTest(mousePosition);
return hit.Item.SubItems.IndexOf(hit.SubItem);
}
但如果在列表视图中至少有一个项目,则有效。 我的列表是空的,那么我怎样才能获得列索引? 提前谢谢。
答案 0 :(得分:0)
private int getcolumn()
{
Point mousePosition = base.PointToClient(Control.MousePosition);
ListViewHitTestInfo hit = base.HitTest(mousePosition);
if Item.SubItems.Any()
{
return hit.Item.SubItems.IndexOf(hit.SubItem);
}
else
{
return -1;
}
}
答案 1 :(得分:0)
空列表将返回null子项。
但是,虽然下面的示例不是很优雅,但您可以看到如何使用Y位置来确定Y与哪个列相关联:
private int getcolumn()
{
Point mousePosition = base.PointToClient(Control.MousePosition);
switch(mousePosition.Y)
{
case mousePosition.Y >= 0 && mousePosition.Y <= base.Columns(0).Width:
Return base.Columns(0).index
break;
case mousePosition.Y >= base.Columns(0).Width && mousePosition.Y <= base.Columns(1).Width:
Return base.Columns(1).index
break;
case mousePosition.Y >= base.Columns(0).Width + base.Columns(1).Width && mousePosition.Y <= base.Columns(2).Width:
Return base.Columns(2).index
break;
default:
Return -1
}
}