winforms 使用IFileOperation接口时出现问题

m1m5dgzv  于 2022-11-17  发布在  其他
关注(0)|答案(1)|浏览(154)

我希望我的应用程序使用IFileOperation interface删除一堆文件。
我找到了this代码,并将其作为类添加到了我的项目中。
然后我这样使用它:

  1. public static void DeleteFiles(string data_path)
  2. {
  3. string[] files = Directory.GetFiles(data_path, "*.*", SearchOption.AllDirectories);
  4. FileOperationG1 op = new FileOperationG1();
  5. op.From = files;
  6. op.Operation = FILEOP_CODES.FO_DELETE;
  7. op.Flags = FILEOP_FLAGS.FOF_NOCONFIRMATION;
  8. op.Flags = FILEOP_FLAGS.FOF_ALLOWUNDO;
  9. op.Execute();
  10. }

我得到这个错误:

  1. System.ArgumentNullException: Value cannot be null.
  2. Parameter name: window
  3. at System.Windows.Interop.WindowInteropHelper..ctor(Window window)
  4. at ***.Classes.FileDir.FileOperationG1.Execute() in C:\Users\***\Desktop\Project Name\Classes\FileDir.cs:line 458

第458行是代码的这一部分:WindowInteropHelper wih = new WindowInteropHelper(ParentWindow);
知道为什么会这样吗?

tjvv9vkg

tjvv9vkg1#

我认为您需要在运行.Execute()之前分配“op”对象的“ParentWindow”属性

  1. FileOperationG1 op = new FileOperationG1();
  2. // add this line VVVV
  3. op.ParentWindow = ????? = "this object Window" // not real code
  4. // fill in the ?????? ^^^^^^^
  5. op.From = files;
  6. op.Operation = FILEOP_CODES.FO_DELETE;
  7. op.Flags = FILEOP_FLAGS.FOF_NOCONFIRMATION;
  8. op.Flags = FILEOP_FLAGS.FOF_ALLOWUNDO;
  9. op.Execute();

相关问题