2010-05-19 57 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

相關問題