如何在C#中创建自定义打开文件对话框

时间:2011-10-20 05:11:34

标签: c# winforms openfiledialog

如何创建一个在C#中具有相同功能(以及一些扩展功能)的OpenFileDialog用户控件?我跟着this,但我找不到解决问题的方法。

我的要求是在对话框中添加一个额外的按钮。如果单击该按钮,则应以与okcancel按钮相同的方式通知父级。

3 个答案:

答案 0 :(得分:2)

OpenFileDialogsealed类,因此无法继承或扩展。您最好的选择是编写自己的打开文件对话框。

另一方面,FileDialog类没有密封,因此您可以从中继承并进行必要的自定义。有关详细信息,请参阅http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx

答案 1 :(得分:1)

OpenFileDialog是一个Windows内置功能(它根本不是.NET),因此扩展它是一项非常重要的任务。为什么不从头开始构建它或寻找任何现有的解决方案?

答案 2 :(得分:1)

您很可能需要使用原始Windows界面来实现此目的。在高级别,你这样做:

  1. 创建IFileOpenDialog
  2. 的实例
  3. 查询此内容以获取对IFileDialogCustomize界面的引用。
  4. 使用AddPushButton方法添加按钮。
  5. IFileOpenDialog界面上调用Advise以注册您的界面以处理事件。该界面为IFileDialogControlEvents,由您实施。您必须实现该接口和IFileDialogEvents
  6. 按下按钮时会调用IFileDialogControlEvents.OnButtonClicked方法。
  7. 仅适用于Vista。如果您需要支持XP,则需要使用GetOpenFileName并为您的自定义提供资源模板。这根本不是什么好玩的,特别是来自托管代码! C ++ / CLI库使得它更易于管理。