Событие удаления расширения VSIX в ListBox не запускается - PullRequest
0 голосов
/ 10 января 2019

Я пытался сделать возможным перетаскивание элементов между двумя или более списками (в списке «Список задач» и «Выполнение») в моем расширении Visual Studio, но по какой-то причине событие Drop не срабатывает.

Текущий код выглядит так:

private void TaskListBox_MouseMove(object sender, System.Windows.Input.MouseEventArgs e)
    {
        if (TaskListBox.Items.Count == 0)
            return;

        if (TaskListBox.SelectedItem == null)
            return;

        if (e.LeftButton == System.Windows.Input.MouseButtonState.Pressed)
        {
            string s = TaskListBox.SelectedItem.ToString();

            DragDrop.DoDragDrop(TaskListBox, s, DragDropEffects.All);
        }

    }

private void DoingBox_DragEnter(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.StringFormat))
            e.Effects = DragDropEffects.All;
        else
            e.Effects = DragDropEffects.None;

    }

private void DoingBox_DragOver(object sender, DragEventArgs e)
    {
        if (e.Data.GetDataPresent(DataFormats.StringFormat))
            e.Effects = DragDropEffects.All;
        else
            e.Effects = DragDropEffects.None;
    }

private void DoingBox_Drop(object sender, DragEventArgs e)
    {

        if (e.Data.GetDataPresent(DataFormats.StringFormat))
        {
            string dataString = (string)e.Data.GetData(DataFormats.StringFormat);
            DoingBox.Items.Add(dataString);
        }
    }

private void DoingBox_DragLeave(object sender, DragEventArgs e)
    {
        MessageBox.Show("Left or cancelled");
    }

Каждое событие работает нормально, за исключением Drop и частично Leave Я могу перетащить свои элементы ListBox в TextBoxes, но не в другие ListBoxes. Когда я отпускаю элемент или даже просто пытаюсь навести курсор на второй ListBox, событие Leave запускается мгновенно.

Что мне здесь не хватает? Решение или, по крайней мере, обходной путь приветствуются.

...