【问题标题】:How to customize an OpenFileDialog using nested types?如何使用嵌套类型自定义 OpenFileDialog?
【发布时间】:2010-05-19 04:21:51
【问题描述】:

假设我想自定义OpenFileDialog 并更改文件扩展名过滤器的工作方式,例如this 问题。在我向上述问题的作者指出 OpenFileDialog 不可继承后,我得到了以下评论:

即使 OpenFileDialog 是密封的(不可继承),您也可以将其用作嵌套类型。例如,使用将获取 NativeDialog 的属性。然后,您始终使用 NativeDialog 属性编写方法,就完成了。

我的问题是,有人可以为我提供一个示例代码,说明我将如何继续做类似的事情?我对嵌套类型的概念有点陌生,所以我很难自己弄清楚这一点,我在网上搜索了一下,找不到任何关于它的具体内容。

谢谢!

【问题讨论】:

    标签: c# winforms


    【解决方案1】:

    嵌套类型只是wrapper class 的另一种说法(我假设)。因此,您将创建一个具有 OpenFileDialog 私有成员类的新类。然后创建所有需要的公共成员。

    因此,对于 OpenFileDialog,您将创建一个这样的类:

    public class CustDialog
    {
       private OpenFileDialog _dialog;
    
       public CustDialog()
       {
           //instantiate custom OpenFileDialog here
       }
    
       public DialogResult ShowDialog()
       {
           return _dialog.ShowDialog();
       }
    }
    

    您甚至可以更进一步,让包装类继承自 CommonDialog 类。这将允许您像使用标准对话框一样使用包装类。

    【讨论】:

    • 感谢您的帮助,但我不认为这是同一件事,根据此 msdn 指南:msdn.microsoft.com/en-us/library/ms173120(v=VS.80).aspx 您的回答将帮助我解决问题,但我仍然想知道是否可以它使用嵌套类型...
    • 嵌套类型仍然不允许您从密封类继承。我不确定这个人告诉你这件事是什么意思,但类包装器会满足你的需要。
    猜你喜欢
    • 1970-01-01
    • 2022-01-11
    • 2016-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 2010-12-17
    相关资源
    最近更新 更多