2016-11-28 5 views
0

У меня есть приложение WinForms, которое отображает файлы внутри какой-либо папки в списке (скажем, D: \ work). Мне нужно добавить свойство drag-n-drop в мое приложение, чтобы я мог перетащить некоторые файлы и удалить их на своем рабочем столе.Минимизируйте мою форму окна при перетаскивании файла, чтобы удалить его на рабочий стол

Так мне удалось сделать это, но я хочу, чтобы моя форма, чтобы свести к минимуму или лучше, отправляется обратно (если есть открытое окно, чтобы уронить файл в нем

Мой listBox_mouseDown:.

private void listBox_MouseDown(object sender, MouseEventArgs e) 
{ 
    ListBox listBox = (ListBox)sender; 
    int index = listBox.IndexFromPoint(e.Location); 
    if (index >= 0) 
    { 
     Item selItem = (Item)listBox.Items[index]; 
     if (selItem != null) 
     { 
      if (e.Button == MouseButtons.Left) 
      { 
       clickPoint = Cursor.Position; 
       string[] filesToDrag = { selItem.path }; 
       listBox.DoDragDrop(new DataObject(DataFormats.FileDrop, filesToDrag), DragDropEffects.Copy);// Here I want the window to minimize 
       diff.X = Math.Abs(clickPoint.X - Cursor.Position.X); 
       diff.Y = Math.Abs(clickPoint.Y - Cursor.Position.Y); 
       if (diff.X < 20 && diff.Y < 20) 
        listBox_MouseClick(sender, e); 
      } 
      else 
      { 
       if (e.Button == MouseButtons.Right) 
       { 
        selItem = (Item)listBox.Items[listBox.IndexFromPoint(e.X, e.Y)]; 
        if (selItem.isFile() && !listBoxFavorites.Items.Contains(selItem)) 
         listBoxFavorites.Items.Add(selItem); 
       } 
      } 
     } 
    } 
} 

listBox_DragOver:

private void listBox_DragOver(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Copy; 
} 

заранее спасибо :)

+0

Что вы имеете в виду «если есть открытое окно, чтобы бросить свой файл»? – GuidoG

+0

Сведение к минимуму вашего собственного окна не так много. Существующий UX для drag + drop предназначен для наведения указателя перетаскивания на кнопку панели задач или ссылку «показать рабочий стол» на панели задач. Попробуй. –

ответ

0

Для миним! Изе ваша форма сделать это:

this.WindowState = FormWindowState.Minimized; 

Чтобы отправить его на задней панели вы можете посмотреть на это: Setting a Windows form to be bottommost