C# WPF FileDrop事件:只允许特定的文件扩展名
我有一个WPF控件,我想将一个特定的文件从我的桌面拖放到此控件。这不是一个沉重的部分,但我想检查文件扩展名,以允许或不允许删除。解决这个问题的最佳方法是什么?我认为这应该有效:C# WPF FileDrop事件:只允许特定的文件扩展名,c#,wpf,events,C#,Wpf,Events,我有一个WPF控件,我想将一个特定的文件从我的桌面拖放到此控件。这不是一个沉重的部分,但我想检查文件扩展名,以允许或不允许删除。解决这个问题的最佳方法是什么?我认为这应该有效: <Grid> <ListBox AllowDrop="True" DragOver="lbx1_DragOver" Drop="lbx1_Drop"></ListBox>
<Grid>
<ListBox AllowDrop="True" DragOver="lbx1_DragOver"
Drop="lbx1_Drop"></ListBox>
</Grid>
太好了,谢谢!我要补充的是,为了防止在移动要放置的控件的子控件时闪烁光标的一些副作用,可以添加以下内容:DragEnter=“lbx1_DragOver”,以便对DragEnter事件以及DragOver进行检查。
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[];
}