如何获取列表视图中没有列表项的已单击列的列索引

本文关键字:列表 索引 单击 何获取 获取 视图 | 更新日期: 2023-09-27 18:07:21

我已经这样做了,它工作得很好:

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

但是,如果在列表视图中至少有一个项目,则工作。我的列表是空的,所以我怎么能得到列索引?

如何获取列表视图中没有列表项的已单击列的列索引

一个空列表将返回一个空子项。

然而,尽管下面的示例不是很优雅,但您可以看到如何使用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
    }
}
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; 
    }
}