C# 如何使用嵌套类型自定义OpenFileDialog?

C# 如何使用嵌套类型自定义OpenFileDialog?,c#,winforms,C#,Winforms,比如说,我想定制一个OpenFileDialog,并更改文件扩展名过滤器的工作方式,如问题中的情况。在我向上述问题的作者指出,OpenFileDialog是不可继承的之后,我得到了如下评论: 即使OpenFileDialog是密封的(不可继承),您也可以将其用作嵌套类型。例如,使用将获取NativeDialog的属性。然后,始终使用NativeDialog属性编写方法,就完成了 我的问题是,有人能给我提供一个示例代码,说明我将如何继续做类似的事情吗?我对嵌套类型的概念有点陌生,所以我自己很难弄清

比如说,我想定制一个
OpenFileDialog
,并更改文件扩展名过滤器的工作方式,如问题中的情况。在我向上述问题的作者指出,
OpenFileDialog
是不可继承的之后,我得到了如下评论:

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

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


谢谢

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

因此,对于OpenFileDialog,您将创建如下类:

public class CustDialog
{
   private OpenFileDialog _dialog;

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

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

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

谢谢您的帮助,但根据本msdn指南,我认为这不是同一回事:您的答案将帮助我解决问题,但我仍然想知道是否可以使用嵌套类型…嵌套类型仍然不允许您从密封类继承。我不确定那个人告诉你这件事时是什么意思,但类包装器可以满足你的需要。