阻止表格的展示事件;

时间:2013-09-10 19:29:46

标签: c# forms show

我正在尝试编写一个自定义对话框。一切都很好但我不希望我的Dialog可以用Show()事件调用。无论如何阻止它?

1 个答案:

答案 0 :(得分:3)

如果您的班级继承自Form,那么这是不可能的。 Show不是虚拟的,因此您无法覆盖它。你应该隐藏它,并让它抛出一个异常或在内部调用ShowDialog(没有办法完全删除它作为一个选项),但那么只需将变量键入Form的任何调用者都可以仍然拨打Show,绕过您的实施。

您可以选择的唯一选择是让您的班级不继承Form。您需要设计类型以使用合成而不是继承。在类型的定义中有一个Form属性,并对其进行操作,向其添加控件等,因为您通常可以操作类型本身。

您需要为要在外部公开的任何功能显式创建成员,将适当的调用重定向到封装的表单(对于ShowDialog等方法)。