C# 如何获取未';t列表视图项?
我已经这样做了,效果很好:C# 如何获取未';t列表视图项?,c#,winforms,listview,C#,Winforms,Listview,我已经这样做了,效果很好: private int getcolumn() { Point mousePosition = base.PointToClient(Control.MousePosition); ListViewHitTestInfo hit = base.HitTest(mousePosition); return hit.Item.SubItems.IndexOf(hit.SubItem); } 但是,如果listview中至少有一个项,则可以
private int getcolumn()
{
Point mousePosition = base.PointToClient(Control.MousePosition);
ListViewHitTestInfo hit = base.HitTest(mousePosition);
return hit.Item.SubItems.IndexOf(hit.SubItem);
}
但是,如果listview中至少有一个项,则可以使用。
我的列表是空的,所以如何获取列索引?
提前感谢。空列表将返回空子项
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;
}
}
但是,虽然下面的示例不是很优雅,但您可以看到如何使用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);
开关(mousePosition.Y)
{
case mousePosition.Y>=0&&mousePosition.Y=base.Columns(0)。Width&&mousePosition.Y=base.Columns(0)。Width+base.Columns(1)。Width&&mousePosition.Y您可以进行条件检查,查看项目是否为空。或者当没有项目命中项目值null时,案例中的子项目似乎不起作用