2009-04-07 9 views
13

WPFコントロールがあり、特定のファイルをデスクトップからこのコントロールにドロップします。これは重大な部分ではありませんが、ファイルの拡張子を確認して、削除を許可または禁止したいと考えています。この問題を解決する最良の方法は何ですか?WPF FileDropイベント:特定のファイル拡張子を許可する

私は、これは動作するはずだと思う

答えて

25

<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[]; 
} 
+3

完璧な、ありがとう! DragEnterイベントでチェックが行われるようにDragEnter = "lbx1_DragOver"を追加することができます。ドラッグするコントロールの子を移動するときに点滅するカーソルの副作用を防ぐために追加します。また、DragOverでも使用できます。 – David

関連する問題