Здравствуйте, zmaxic, Вы писали:
Z>Всем привет. Хочу менять строки местами в DataGridView путем их перетаскивания через drag and drop. Z>Вробе бы все получается, но натолкнулся на проблему: Z>как определить, какая строка лежит под курсором мыши в момент события dragdrop? Z>Например для списков есть функция IndexFromPoint() , а для DataGridView — я что то такого аналога не нашел...
Z>Подскажите, пожалуйста? Z>и ещё сразу уж тогда вопрос — как сделать, чтобы когда тащишь объект он рисовался вслед за мышью бледной тенью?
Z>Спасибо...
Встретилась такая же задача...
В лоб решил так:
перебираем индекс строки от dataGridView.FirstDisplayedScrollingRowIndex до + dataGridView.DisplayedRowCount (или выхода индекса за количество строк);
приводим координаты курсора мыши из события DragOver к координатам в пределах dataGridView;
получаем прямоугольник строки dataGridView.GetRowDisplayRectangle(rowIndex, true);
если координаты курсора попадают в этот прямоугольник, то курсор над строкой;
здесь можно сохранять в какой-то переменной индекс найденной строки и, если он новый, вызывать dataGridView.Invalidate(); что позволит графически выделить строку с помощью события dataGridView.CellFormatting;