2010-05-19 87 views
2

假设我想自定义OpenFileDialog并更改文件扩展名的筛选器的工作方式,例如this问题。我指出了笔者的上述问题作出了OpenFileDialog是不可继承后,我得到了以下评论:如何使用嵌套类型自定义OpenFileDialog?

即使打开文件对话框密封(不可继承),你可以使用它作为一个嵌套类型。例如,使用将获得NativeDialog的属性。然后,你总是使用NativeDialog属性编写你的方法,你就完成了。

我的问题是,有人可以提供一个示例代码,我将如何继续做类似的事情吗?我对嵌套类型的概念很陌生,所以我很难自己搞清楚,我在网络上搜索,找不到任何太具体的东西。

谢谢!

回答

2

嵌套类型只是另一种说wrapper class(我假设)的方式。所以你会创建一个具有OpenFileDialog的私有成员类的新类。然后你创建你需要的所有公共成员。

因此,对于打开文件对话框你可以创建一个类是这样的:

public class CustDialog 
{ 
    private OpenFileDialog _dialog; 

    public CustDialog() 
    { 
     //instantiate custom OpenFileDialog here 
    } 

    public DialogResult ShowDialog() 
    { 
     return _dialog.ShowDialog(); 
    } 
} 

你甚至可以借此一步,已经从CommonDialog类包装类继承。这将允许你使用你的包装类完全像一个标准的对话框。

+0

感谢您的帮助,但我不认为这是同样的事情,根据这个MSDN指南:http://msdn.microsoft.com/en-us/library/ms173120(v=VS.80)。 aspx 您的回答将帮助我解决问题,但我仍然怀疑我是否可以使用嵌套类型来实现它... – vitorbal 2010-05-19 20:05:54

+0

嵌套类型仍然不允许您从密封类继承。我不确定当这个人告诉你这个人是什么意思,但是一个类包装会做你需要的。 – 2010-05-19 21:21:13

+0

我同意,感谢您的帮助! – vitorbal 2010-05-20 16:34:20

相关问题