Re: Хочу менять местами строки в DataGridView перетаскивая и
От: Rius Россия  
Дата: 16.07.08 17:23
Оценка:
Здравствуйте, 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;
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.