如何获取没有listview项的listview的单击列的列索引?

时间:2014-06-06 21:00:02

标签: c# listview

我做到了这一点并且工作正常:

private int getcolumn()
{
    Point mousePosition = base.PointToClient(Control.MousePosition);
    ListViewHitTestInfo hit = base.HitTest(mousePosition);   
    return hit.Item.SubItems.IndexOf(hit.SubItem); 
}

但如果在列表视图中至少有一个项目,则有效。 我的列表是空的,那么我怎样才能获得列索引? 提前谢谢。

2 个答案:

答案 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
    }

}