我正在尝试编写一个自定义对话框。一切都很好但我不希望我的Dialog可以用Show()事件调用。无论如何阻止它?
答案 0 :(得分:3)
如果您的班级继承自Form
,那么这是不可能的。 Show
不是虚拟的,因此您无法覆盖它。你应该隐藏它,并让它抛出一个异常或在内部调用ShowDialog
(没有办法完全删除它作为一个选项),但那么只需将变量键入Form
的任何调用者都可以仍然拨打Show
,绕过您的实施。
您可以选择的唯一选择是让您的班级不继承Form
。您需要设计类型以使用合成而不是继承。在类型的定义中有一个Form
属性,并对其进行操作,向其添加控件等,因为您通常可以操作类型本身。
您需要为要在外部公开的任何功能显式创建成员,将适当的调用重定向到封装的表单(对于ShowDialog
等方法)。