1

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

4

1 回答 1

3

如果您的类继承自Form它是不可能的。 Show不是虚拟的,所以你不能覆盖它。您应该隐藏它,并让它抛出异常或ShowDialog在内部调用(无法将其作为一个选项完全删除),但是任何只将变量键入为的调用者Form仍然可以调用Show,绕过您的实现。

您唯一可用的选项是您的类不继承自Form. 您需要将类型设计为使用组合而不是继承。在您的类型定义中拥有一个Form属性,并对其进行操作、向其添加控件等,就像您通常可以操作类型本身一样。

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

于 2013-09-10T19:44:00.200 回答