System.Windows.Forms.ListView.GetItemLocation C# (CSharp) Method

GetItemLocation() private method

private GetItemLocation ( int index ) : Point
index int
return System.Drawing.Point
		internal Point GetItemLocation (int index)
		{
			Point loc = Point.Empty;
			if (virtual_mode)
				loc = GetFixedItemLocation (index);
			else
				loc = items_location [index];

			loc.X -= h_marker; // Adjust to scroll
			loc.Y -= v_marker;

			return loc;
		}

Usage Example

        public int NearestIndex(Point_ pt)
        {
            double distance = Double.MaxValue;
            int    nearest  = -1;

            for (int i = 0; i < listview_owner.Items.Count; i++)
            {
                Point_ pos = listview_owner.GetItemLocation(i);
                double d   = Math.Pow(pos.X - pt.X, 2) + Math.Pow(pos.Y - pt.Y, 2);
                if (d < distance)
                {
                    distance = d;
                    nearest  = i;
                }
            }

            if (listview_owner.item_control.dragged_item_index == nearest)
            {
                return(-1);
            }

            return(nearest);
        }
ListView