如何创建一个在C#中具有相同功能(以及一些扩展功能)的OpenFileDialog用户控件?我跟着this,但我找不到解决问题的方法。
我的要求是在对话框中添加一个额外的按钮。如果单击该按钮,则应以与ok
和cancel
按钮相同的方式通知父级。
答案 0 :(得分:2)
OpenFileDialog
是sealed
类,因此无法继承或扩展。您最好的选择是编写自己的打开文件对话框。
另一方面,FileDialog
类没有密封,因此您可以从中继承并进行必要的自定义。有关详细信息,请参阅http://www.codeproject.com/KB/dialog/OpenFileDialogEx.aspx
答案 1 :(得分:1)
OpenFileDialog
是一个Windows内置功能(它根本不是.NET),因此扩展它是一项非常重要的任务。为什么不从头开始构建它或寻找任何现有的解决方案?
答案 2 :(得分:1)
您很可能需要使用原始Windows界面来实现此目的。在高级别,你这样做:
IFileOpenDialog
。IFileDialogCustomize
界面的引用。AddPushButton
方法添加按钮。IFileOpenDialog
界面上调用Advise
以注册您的界面以处理事件。该界面为IFileDialogControlEvents
,由您实施。您必须实现该接口和IFileDialogEvents
。IFileDialogControlEvents.OnButtonClicked
方法。仅适用于Vista。如果您需要支持XP,则需要使用GetOpenFileName
并为您的自定义提供资源模板。这根本不是什么好玩的,特别是来自托管代码! C ++ / CLI库使得它更易于管理。