c # Перетаскивание в просмотр списка - PullRequest
0 голосов
/ 13 марта 2009

У меня есть список, из которого я перетаскиваю в ListView. Теперь у меня есть группы в ListView, поэтому, когда элемент из ListView отбрасывается в точке списка, он должен добавить его в эту группу.

Это код, который обрабатывает падение.

    private void lstvPositions_DragDrop(object sender, DragEventArgs e)
    {

        var group = lstvPositions.GetItemAt(e.X, e.Y);
        var item = e.Data.GetData(DataFormats.Text).ToString();
        lstvPositions.Items.Add(new ListViewItem {Group = group.Group, Text = item});

    }

Я не нашел функцию, которая могла бы дать groupitem, поэтому я использовал GetItemAt, из которого у меня также есть доступ к группе listview.

Но GetItemAt всегда возвращает ноль.

Я что-то не так делаю? Есть ли лучший способ сделать это?

1 Ответ

2 голосов
/ 13 марта 2009

Во-первых, я предполагаю, что вы используете ListView, а не ListBox, поскольку ListBox не содержит члена GetItemAt. * ​​1001 *

Чтобы решить вашу проблему, преобразуйте точку в локальные координаты:

private void lstvPositions_DragDrop(object sender, DragEventArgs e)
{
   var localPoint = lstvPositions.PointToClient(new Point(e.X, e.Y));
   var group = lstvPositions.GetItemAt(localPoint.X, localPoint.Y);
   var item = e.Data.GetData(DataFormats.Text).ToString();
   lstvPositions.Items.Add(new ListViewItem {Group = group.Group, Text = item});
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...