13
WPFコントロールがあり、特定のファイルをデスクトップからこのコントロールにドロップします。これは重大な部分ではありませんが、ファイルの拡張子を確認して、削除を許可または禁止したいと考えています。この問題を解決する最良の方法は何ですか?WPF FileDropイベント:特定のファイル拡張子を許可する
私は、これは動作するはずだと思うWPFコントロールがあり、特定のファイルをデスクトップからこのコントロールにドロップします。これは重大な部分ではありませんが、ファイルの拡張子を確認して、削除を許可または禁止したいと考えています。この問題を解決する最良の方法は何ですか?WPF FileDropイベント:特定のファイル拡張子を許可する
私は、これは動作するはずだと思う:
<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[];
}
完璧な、ありがとう! DragEnterイベントでチェックが行われるようにDragEnter = "lbx1_DragOver"を追加することができます。ドラッグするコントロールの子を移動するときに点滅するカーソルの副作用を防ぐために追加します。また、DragOverでも使用できます。 – David