I've used something like this before in the DragOver event handler of ListBox:
Dim intIndex As Integer
intIndex = ListBox1.IndexFromPoint(ListBox1.PointToClient(New Point(e.X, e.Y)))
ListBox1.SelectedIndex = intIndex
Maybe it's possible you could do something similar with your custom control. Sorry this is in VB not C#, but I imagine it wouldn't be too hard to translate.