WPF FileDrop Event: просто разрешить конкретное расширение файла - PullRequest
13 голосов
/ 07 апреля 2009

У меня есть элемент управления WPF, и я хочу перенести определенный файл со своего рабочего стола в этот элемент управления. Это не тяжелая часть, но я хотел бы проверить расширение файла, чтобы разрешить или запретить удаление. Как лучше всего решить эту проблему?

1 Ответ

25 голосов
/ 10 апреля 2009

Я думаю, что это должно работать:

<Grid>
    <ListBox AllowDrop="True" DragOver="lbx1_DragOver" 
                                                      Drop="lbx1_Drop"></ListBox>
</Grid>

Предположим, вы хотите разрешить только файлы C #:

private void lbx1_DragOver(object sender, DragEventArgs e)
{
   bool dropEnabled = true;
   if (e.Data.GetDataPresent(DataFormats.FileDrop, true))
   {
      string[] filenames = 
                       e.Data.GetData(DataFormats.FileDrop, true) as string[];

      foreach (string filename in filenames)
      {
         if(System.IO.Path.GetExtension(filename).ToUpperInvariant() != ".CS")
         {
            dropEnabled = false;
    break;
         }
       }
   }
   else
   {
      dropEnabled = false;
   }

   if (!dropEnabled)
   {
      e.Effects = DragDropEffects.None;
  e.Handled = true;
   }            
}


private void lbx1_Drop(object sender, DragEventArgs e)
{
    string[] droppedFilenames = 
                        e.Data.GetData(DataFormats.FileDrop, true) as string[];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...