2016-08-06 9 views
0

特定のファイル拡張子エラーを許可し、私はここからこのコードをコピー: 私はWPF FileDragOverイベント:ちょうど

Copy From Here

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

のdragoverファイルに問題があるのは、あなたができるようにしたいと仮定しましょう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[]; 
} 

しかし、私はwanここで複数の拡張子を使用することはできません: どうすればできますか?何かのように

if(System.IO.Path.GetExtension(filename).ToUpperInvariant() != ".mp3,.mp4,.mkv") 

答えて

1
var allowedExtensions = new [] { ".MP3", ".MP4", ".MKV" }; 

// If All of the filename extensions are contained in allowedExtensions, 
// set dropEnabled to true. 

dropEnabled = filenames.All(fn => 
     allowedExtensions.Contains(System.IO.Path.GetExtension(fn).ToUpperInvariant()) 
    ); 

は、ここでより多くのスペースを占めるが、それは理解することが少し簡単ですバージョンです:

var allowedExtensions = new [] { ".MP3", ".MP4", ".MKV" }; 

foreach (var fn in filenames) 
{ 
    var ext = System.IO.Path.GetExtension(fn).ToUpperInvariant(); 

    if (!allowedExtensions.Contains(ext)) 
    { 
     dropEnabled = false; 
     break; 
    } 
} 

この質問は、WPFとは何の関係もありません。それはC#の質問です。

+0

ありがとう –