在我的WPF应用程序中,我实现了拖放功能。从Windows资源管理器中删除打开文件 使用
AllowDrop="True"
DragOver="MainWindow_DragOver"
Drop="MainWindow_Drop"
没问题,一切正常。
但是如果打开一个对话框 我总是可以将Windows资源管理器中的拖放文件拖放到我的应用程序的主窗口中。 你有没有遇到过这个问题?你能帮我解决一下吗?谢谢
答案 0 :(得分:1)
如果您的对话框是模态对话框,则会禁用父窗口。这可以使用IsWindowEnabled API call进行检查。 (我不是WPF专家,但.IsEnabled或.Focusable属性似乎没有这种方式。)
void MainWindow_DragOver(object sender, DragEventArgs e)
{
bool isEnabled = NativeMethods.IsWindowEnabled(new WindowInteropHelper(this).Handle);
e.Effects = isEnabled ? DragDropEffects.Copy : DragDropEffects.None;
e.Handled = true;
}
class NativeMethods
{
[DllImport("user32.dll")]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool IsWindowEnabled(IntPtr hWnd);
}
答案 1 :(得分:0)
当对话框打开时,不允许删除主表单。确保打开模态对话框(ShowDialog
而不是Show
)。